我如何使用Cultureinfo获得12小时或24小时的时间(无日期)



我想使用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);
}

相关内容

  • 没有找到相关文章

最新更新