有问题的代码如下:

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 ?


当前回答

string.Format("{0:hh:mm:ss tt}", DateTime.Now)

这将为您提供时间的字符串值。Tt应该附加am/pm。

你也可以看看相关的话题:

你如何得到当前的时间?

其他回答

+ PC.GetHour(datetime) > 11 ? "pm" : "am"

对于你的例子,但是有更好的方法格式化datetime。

如何:

dateTime.ToString("tt", CultureInfo.InvariantCulture);

您可以用这种方法进行测试

Console.WriteLine(DateTime.Now.ToString("tt "));

输出如下所示:

AM

or

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

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

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

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