有问题的代码如下:

public static string ChangePersianDate(DateTime dateTime)
{
    System.Globalization.GregorianCalendar PC = new System.Globalization.GregorianCalendar();
    PC.CalendarType = System.Globalization.GregorianCalendarTypes.USEnglish;
    return
    PC.GetYear(dateTime).ToString()
    + "/"
    + PC.GetMonth(dateTime).ToString()
    + "/"
    + PC.GetDayOfMonth(dateTime).ToString()
    + ""
    + PC.GetHour(dateTime).ToString()
    + ":"
    + PC.GetMinute(dateTime).ToString()
    + ":"
    + PC.GetSecond(dateTime).ToString()
    + " "
    ????????????????
}

如何从dateTime值中获得AM/PM ?


当前回答

如果你想给LongDateString Date添加时间,你可以这样格式化它:

    DateTime date = DateTime.Now;
    string formattedDate = date.ToLongDateString(); 
    string formattedTime = date.ToShortTimeString();
    Label1.Text = "New Formatted Date: " + formattedDate + " " + formattedTime;

输出:

New Formatted Date: Monday, January 1, 1900 8:53 PM 

其他回答

来自:http://www.csharp-examples.net/string-format-datetime/

string.Format("{0:t tt}", datetime);  // -> "P PM"  or "A AM"

@Andy的回答是ok。但如果你想显示时间而不是24小时格式,你可以这样做

string dateTime = DateTime.Now.ToString("hh:mm:ss tt", CultureInfo.InvariantCulture);

之后,你应该得到“10:35:20 PM”或“10:35:20 AM”这样的时间

如何:

dateTime.ToString("tt", CultureInfo.InvariantCulture);
string AM_PM = string.Format("{0:hh:mm:ss tt}", DateTime.Now).Split(new char[]{' '})[1];

下面是一种更简单的方法,您可以编写时间格式(hh:mm:ss tt),并根据需要分别显示它们。

string time = DateTime.Now.Hour.ToString("00") + ":" + DateTime.Now.Minute.ToString("00") + ":" + DateTime.Now.Second.ToString("00") + DateTime.Now.ToString(" tt");

或者简单地说:

 DateTime.Now.ToString("hh:mm:ss tt")