DateTime.ToString()将meridiem显示为"AM"或"PM"

Kyl*_*yle 5 .net asp.net datetime

有没有办法使用DateTime.ToString()方法将时间部分的meridiem显示为"AM"而不是"AM"?我尝试使用掩码"tt",但这只输出"AA"

Pao*_*sco 14

您可以重新定义AMDesignator和的PMDesignator属性 CultureInfo.DateTimeFormat,然后将文化指定为格式提供者:

using System;
using System.Globalization;

class Program {
    public static void Main() {
        CultureInfo c = (CultureInfo)CultureInfo.CurrentCulture.Clone();
        c.DateTimeFormat.AMDesignator = "A.M.";
        c.DateTimeFormat.PMDesignator = "P.M.";
        Console.WriteLine(DateTime.Now.ToString("tt",c));
    }
}
Run Code Online (Sandbox Code Playgroud)


jas*_*son 12

用途"t.\\M":

DateTime time = DateTime.Now;
string s = time.ToString("yyyy.MM.dd hh:mm:ss t.\\M.");
Console.WriteLine(s);
Run Code Online (Sandbox Code Playgroud)

输出:

2010.02.02 09:26:14 A.M.
Run Code Online (Sandbox Code Playgroud)

说明:t给出了AM/PM指示器(本地化指示符可以被检索的第一个字符DateTimeFormatInfo.AMDesignatorDateTimeFormatInfo.PMDesignator).该\\M逃逸的M,这样DateTime.ToString不会把它解释为格式字符串的一部分,打印月份的数值.

请注意,一旦执行此操作,您就明确地对文化不敏感.例如,在日本,AM/PM指示符的第二个字符不同,而不是第一个字符.