Есть ли способ сохранить форматирование даты и времени для конкретной культуры, но принудительно отображать 12/24 часа? Я знаю, что могу многое сделать с фактической строкой формата даты/времени, такой как HH:mm:ss
и hh:mm:ss
, но я хотел бы соблюдать текущее форматирование культуры пользователя (т.
Форматирование 12/24 часа в зависимости от культуры .net
Ответы (4)
Я бы, наверное, сделал что-то вроде этого:
var culture = CultureInfo.CurrentCulture;
var pattern = culture.DateTimeFormat.LongTimePattern; // or pick which one you want to use;
var newPattern = pattern.Replace("h", "H").Replace("t", "");
DateTime.Now.ToString(newPattern); // or use whatever DateTime you want to use
Из чата:
Вот список строк длинных временных шаблонов всех культур и то, как они будут изменены:
Old: hh:mm:ss tt New: HH:mm:ss
Old: HH:mm:ss 'ч.' New: HH:mm:ss 'ч.'
Old: HH:mm:ss New: HH:mm:ss
Old: H:mm:ss New: H:mm:ss
Old: h:mm:ss tt New: H:mm:ss
Old: tt h:mm:ss New: H:mm:ss
Old: h:mm:ss.tt New: H:mm:ss.
Old: HH.mm.ss New: HH.mm.ss
Old: tt hh:mm:ss New: HH:mm:ss
Trim()
после замены, чтобы избежать начальных и конечных пробелов, оставшихся после удаления tt.
- person Nigel Touch; 30.01.2015
Вы можете использовать строки пользовательского формата даты/времени, например:
Для 12-часового рендеринга:
DateTime.Now.ToString("hh:mm:ss tt");
для 24-часового рендеринга:
DateTime.Now.ToString("HH:mm:ss");
Чтобы объединить формат даты из текущего языка и региональных параметров, вы можете использовать один из следующих способов:
DateTime.Now.ToString("d") + DateTime.Now.ToString(" hh:mm:ss tt");
DateTime.Now.ToString(CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern +
" hh:mm:ss tt");
Это зависит от того, о каких культурах вы говорите. Некоторые культуры не принимают 24-часовое время, а другие не принимают AM/PM. Самый безопасный выбор, вероятно, InvariantCulture
.
hh
или HH
, который может работать или не работать в зависимости от культуры.
- person James Johnson; 11.11.2011
Используйте DateTime.ToShortTimeString(), чтобы получить версию, подходящую для вашей культуры. Примечание. По умолчанию он использует текущие настройки культуры потока.
Пример (из MSDN):
// This code example demonstrates the DateTime.ToLongDateString(),
// DateTime.ToLongTimeString(), DateTime.ToShortDateString(), and
// DateTime.ToShortTimeString() methods.
using System;
using System.Threading;
using System.Globalization;
class Sample
{
public static void Main()
{
string msg1 = "The date and time patterns are defined in the DateTimeFormatInfo \n" +
"object associated with the current thread culture.\n";
// Initialize a DateTime object.
Console.WriteLine("Initialize the DateTime object to May 16, 2001 3:02:15 AM.\n");
DateTime myDateTime = new System.DateTime(2001, 5, 16, 3, 2, 15);
// Identify the source of the date and time patterns.
Console.WriteLine(msg1);
// Display the name of the current culture.
CultureInfo ci = Thread.CurrentThread.CurrentCulture;
Console.WriteLine("Current culture: \"{0}\"\n", ci.Name);
// Display the long date pattern and string.
Console.WriteLine("Long date pattern: \"{0}\"", ci.DateTimeFormat.LongDatePattern);
Console.WriteLine("Long date string: \"{0}\"\n", myDateTime.ToLongDateString());
// Display the long time pattern and string.
Console.WriteLine("Long time pattern: \"{0}\"", ci.DateTimeFormat.LongTimePattern);
Console.WriteLine("Long time string: \"{0}\"\n", myDateTime.ToLongTimeString());
// Display the short date pattern and string.
Console.WriteLine("Short date pattern: \"{0}\"", ci.DateTimeFormat.ShortDatePattern);
Console.WriteLine("Short date string: \"{0}\"\n", myDateTime.ToShortDateString());
// Display the short time pattern and string.
Console.WriteLine("Short time pattern: \"{0}\"", ci.DateTimeFormat.ShortTimePattern);
Console.WriteLine("Short time string: \"{0}\"\n", myDateTime.ToShortTimeString());
}
}
/*
This code example produces the following results:
Initialize the DateTime object to May 16, 2001 3:02:15 AM
The date and time patterns are defined in the DateTimeFormatInfo
object associated with the current thread culture.
Current culture: "en-US"
Long date pattern: "dddd, MMMM dd, yyyy"
Long date string: "Wednesday, May 16, 2001"
Long time pattern: "h:mm:ss tt"
Long time string: "3:02:15 AM"
Short date pattern: "M/d/yyyy"
Short date string: "5/16/2001"
Short time pattern: "h:mm tt"
Short time string: "3:02 AM"
*/