什么会在DateTime to String转换中产生这些奇怪的字符?

时间:2014-12-17 10:48:49

标签: .net datetime

我有一些代码在某些输出文件中记录DateTime

 DateTime dateTime = DateTime::Now;
 String^ value = String::Format("{0} {1}", dateTime.ToShortDateString(), dateTime.ToLongTimeString());

...显然在客户机器上提供了一些奇怪的输出:

2014-12-16 오전 12:00:00

可能导致这些额外字符出现的原因是什么?

3 个答案:

答案 0 :(得分:4)

如果用户位于不同的区域设置,这是相当合理的 - 您应该询问您的客户他们的系统区域设置是什么。如果需要机器可读格式,请使用不变文化。例如:

String^ value = dateTime.ToString("yyyy-MM-dd HH:mm:ss",
                                  CultureInfo::InvariantCulture);

答案 1 :(得分:3)

根据Wikipedia,这些字符在韩语中意为“上午”(请参阅​​英文链接),所以我想这是在客户的区域设置中,通过(大概)ToLongTimeString()来表示。

答案 2 :(得分:1)

通过使用CultureInfo类,您始终可以保持固定的日期格式。即使在不同位置访问页面或文件后。通过定义如下

对于Ex:

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");