我想使用C#以适当的文化格式进行一天的格式化。
例如,如果当前的文化是En-us,我想在1:00 pm展示,如果当前的文化是Frr,我想显示13:00。我只想要一天中的时间,我不想要约会。
//timeOfDay is a DateTime object.
//This will return the 12 hour clock regardless of culture:
time = timeOfDay.ToString("h:mm tt", CultureInfo.CurrentCulture);
//This will return the 24 hour clock regardless of culture
time = timeOfDay.ToString("H:mm tt", CultureInfo.CurrentCulture);
//This will return the correct clock for the culture, but the date will also be present
time = timeOfDay.ToString(CultureInfo.CurrentCulture);
请注意," TT"是适用于AM/PM的,并且在文化上是敏感的(在法国,它是空白的)。
我如何获得当前文化的适当时钟格式,而没有日期?
这似乎有效:
string time = timeOfDay.ToString(CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern, CultureInfo.CurrentCulture);
第二个参数也可能是不必要的。
如果您不需要明确,则可以使用.ToShortTimeString()
并让系统确定格式。
https://msdn.microsoft.com/en-us/library/system.datetime.toshorttimestring(v = vs.110).aspx
ToshortTimestring方法返回的字符串对培养敏感。它反映了当前文化的dateTimeFormatinfo对象定义的模式。例如,对于EN-US文化,标准短时模式为" H:MM TT" ;对于de-de文化,它是" HH:MM" ;对于JA-JP文化,它是" H:MM" 。特定计算机上的特定格式字符串也可以自定义,以使其不同于标准的短期格式字符串。
重点是我的。
编辑为此用例演示:
//ToShortTimeString automatically uses current culture to show hour:minute
string time = timeOfDay.ToShortTimeString();
我看不到任何其他选项可以以不同的方式检查CurrentCulture
信息和格式timeOfDay
(因为您的字符串具有不同的格式)。>
if (CultureInfo.CurrentCulture == new CultureInfo("en-US"))
{
time = timeOfDay.ToString("h:mm tt", CultureInfo.CurrentCulture);
}
if (CultureInfo.CurrentCulture == new CultureInfo("fr-FR"))
{
time = timeOfDay.ToString("HH:mm", CultureInfo.CurrentCulture);
}