0

DateTime.UtcNow.ToLongTimeString()用来获取当前时间字符串。

但是它的行为很奇怪,有时它会像返回时间一样3:10:00,有时又像03:10:00(前导零)。为什么会发生这种情况?

我在应用程序启动时设定了一种文化

Thread.CurrentThread.CurrentCulture = new CultureInfo(...);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(...);

时间字符串的不同结果来自一个任务(从我现在可以看到的)。所以我创建了一个任务并.Wait()让它完成。在任务内部,时间以不同的方式转换为字符串。

更新

对于那些感兴趣的人,这是我发现的一些有用的阅读材料:

有没有办法为整个应用程序设置文化?所有当前线程和新线程?
http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.defaultthreadcurrentculture.aspx

4

1 回答 1

1

但是它的行为很奇怪,有时它会返回像 3:10:00 这样的时间,有时像 03:10:00(前导零)。

你没有说这发生在哪里——但如果你使用不同的文化,它肯定会发生。通常,如果没有前导零,我也希望看到一个 am/pm 指示符。

如果您想要一致的结果,请始终指定相同的文化(例如CultureInfo.InvariantCulture)。

当然,如果这一切都在同一个系统上而不改变文化设置,那就是另一回事了。

于 2012-12-14T06:55:52.867 回答