В Windows вы можете получить строку формата Short time из реестра.По крайней мере, на моей машине это то, что системные часы в трее используют:
HKEY_CURRENT_USER\Control Panel\International\sShortTime
Если значение содержит нижний регистр 'h'
, то он отображает AM/PM
формат.В противном случае это формат 24-hour
(который использует верхний регистр 'H'
для часа).
Вот метод, который читает ключ и возвращает true
, если он находится в 24-часовом формате (примечаниечто для класса Registry
вам нужно using Microsoft.Win32;
в вашем пространстве имен):
private static string GetSystemTimeFormat()
{
return Registry
.GetValue(@"HKEY_CURRENT_USER\Control Panel\International", "sShortTime", "x")
.ToString()
.Contains("h")
? "AM/PM"
: "24-hour";
}
Чтобы проверить это, я запустил следующий код:
private static void Main()
{
Console.WriteLine($"Currently the system clock is {GetSystemTimeFormat()} format");
GetKeyFromUser("Change the format and press any key to try again...");
Console.WriteLine($"Now the system clock is {GetSystemTimeFormat()} format");
GetKeyFromUser("\nDone! Press any key to exit...");
}
private static ConsoleKeyInfo GetKeyFromUser(string prompt)
{
Console.Write(prompt);
var key = Console.ReadKey();
Console.WriteLine();
return key;
}
Затем, после запроса,Я изменил «Короткое время» здесь (к которому я пришел, щелкнув правой кнопкой мыши на часах и выбрав «Настроить дату / время»):
![![enter image description here](https://i.stack.imgur.com/ALCx9.png)
И вывод был следующий (который соответствовал тому, как часы выглядели в трее):
![enter image description here](https://i.stack.imgur.com/1hGgE.png)