我有一个DateTime对象,我想输出小时,分钟,秒和小数秒作为当前文化本地化的字符串.
这有两个问题.
第一个问题是没有标准DateTime格式显示小数秒.我基本上想知道如何获得长时间的 DateTime格式,但是使用小数秒.
我当然可以获得DateTimeFormatInfo.LongTimePattern并附加".fff"并将其传递给它DateTime.ToString(),但是一些特定于文化的格式,特别是US,以AM/PM结束.所以事情并非那么简单.
第二个问题是,DateTime.ToString()似乎没有本地化数字小数分隔符.如果我决定强制每个文化使用硬编码自定义时间格式,它仍然不会创建本地化字符串,因为数字小数分隔符将不是特定于文化的.
更复杂的是,某些文化的日期时间格式使用句点作为格式的一部分.这使得很难放置占位符,例如句点,并用文化特定的小数分隔符替换它.
现在我已经采用了这种解决方法:
string format = string.Format("HH:mm:ss{0}fff",
CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);
string time = DateTime.Now.ToString(format);
Run Code Online (Sandbox Code Playgroud)
我认为应该适用于没有与时间分隔符相同的小数分隔符的每种文化,但这是一个假设.
注意:尽管对这两个问题都有一个解决方案会很好,但对于我的特定应用程序,我更感兴趣的是使用小数秒来定制自定义日期时间格式而不是使用标准日期时间格式.