DateTime.ToString () отображает меридием как «А.М.» или "П.М." - PullRequest
5 голосов
/ 02 февраля 2010

Есть ли способ использовать метод DateTime.ToString (), чтобы отобразить меридием временной части как «A.M.» вместо "АМ"? Я пытался использовать маску "t.t." но это только выводит «А.А.»

Ответы [ 2 ]

14 голосов
/ 02 февраля 2010

Можно переопределить свойства 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));
    }
}
12 голосов
/ 02 февраля 2010

Использование "t.\\M":

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

Выход:

2010.02.02 09:26:14 A.M.

Объяснение: t дает первый символ обозначения AM / PM (локализованный указатель может быть получен в DateTimeFormatInfo.AMDesignator и DateTimeFormatInfo.PMDesignator). \\M экранирует M, поэтому DateTime.ToString не интерпретирует его как часть строки формата и не печатает числовое значение месяца.

Обратите внимание, что когда вы делаете это, вы явно нечувствительны к культуре. Например, в Японии обозначение AM / PM отличается вторыми символами, а не первыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...