DateTime.ToLongTimeString()生成不同的字符串

时间:2012-12-14 06:53:33

标签: c# .net-4.5

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

然而它表现得很奇怪,有时会返回时间3:10:00,有时像03:10:00(前导零)。为什么会这样?

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

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

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

更新

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

Is there a way of setting culture for a whole application? All current threads and new threads?
http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.defaultthreadcurrentculture.aspx

1 个答案:

答案 0 :(得分:1)

  

然而它表现得很奇怪,有时会像3:10:00那样返回时间,有时像03:10:00(前导零)。

你还没有说过发生这种情况的 - 但如果你使用不同的文化,它肯定会发生。通常没有前导零,我期望看到上午/下午指示符。

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

当然,如果这一切都在同一系统上而没有改变文化背景,那就是另一回事了。