有问题的代码如下:

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 ?


当前回答

我知道这似乎有点晚了。然而,它可能会帮助一些人

我想要得到约会的上午下午部分,所以我使用了安迪的建议:

dateTime.ToString("tt");

我用那部分构造了一个路径来保存我的文件。 我建立了我的假设,我将得到AM或PM,没有其他!!

然而,当我使用PC时,它的文化不是英语。(对我来说是阿拉伯语)..我的应用程序失败,因为格式“tt”返回一些新的不是AM或PM (م或ص)..

所以解决这个问题的方法是忽略文化,添加第二个参数,如下所示:

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

.. 当然你必须加上:使用System.Globalization;在你的文件上面 我希望这能帮助到一些人:)

其他回答

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

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

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

我知道这似乎有点晚了。然而,它可能会帮助一些人

我想要得到约会的上午下午部分,所以我使用了安迪的建议:

dateTime.ToString("tt");

我用那部分构造了一个路径来保存我的文件。 我建立了我的假设,我将得到AM或PM,没有其他!!

然而,当我使用PC时,它的文化不是英语。(对我来说是阿拉伯语)..我的应用程序失败,因为格式“tt”返回一些新的不是AM或PM (م或ص)..

所以解决这个问题的方法是忽略文化,添加第二个参数,如下所示:

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

.. 当然你必须加上:使用System.Globalization;在你的文件上面 我希望这能帮助到一些人:)

非常简单

  Date someDate = new DateTime();
  string timeOfDay = someDate.ToString("hh:mm tt"); 
  // hh - shows hour and mm - shows minute - tt - shows AM or 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 

下面是一种更简单的方法,您可以编写时间格式(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")