有问题的代码如下:

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 ?


当前回答

比如bool isPM = GetHour() > 11。但如果您想将日期格式化为字符串,则不需要自己执行此操作。使用日期格式函数。

其他回答

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

这将为您提供时间的字符串值。Tt应该附加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 
string AM_PM = string.Format("{0:hh:mm:ss tt}", DateTime.Now).Split(new char[]{' '})[1];

DateTime应该始终在“美国”(格里高利历)的内部。所以如果你这样做

var str = dateTime.ToString(@"yyyy/MM/dd hh:mm:ss tt", new CultureInfo("en-US"));

你可以少写几行就能得到你想要的东西。

如何:

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