我想用C#以适当的文化格式格式化一天中的时间。
例如,如果当前文化是en-US,我想在下午1:00显示,如果当前文化是fr-FR,我想显示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,并且具有文化敏感性(在法国,它应该是空白的。)
如何在没有日期的情况下为当前文化获取适当的时钟格式?
答案 0 :(得分:0)
这似乎有效:
string time = timeOfDay.ToString(CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern, CultureInfo.CurrentCulture);
第二个参数也可能是不必要的。
答案 1 :(得分:0)
如果您不需要明确,可以使用.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();
答案 2 :(得分:-1)
我没有看到任何其他选项来检查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);
}