2014-10-05 87 views
0

我有一个DateTime C#对象(在Unity脚本中,针对Android设备)。我想通过.toString()(因此没有任何特殊的格式参数)来检索一个字符串表示,它应该提供一个简短的表格,比如“10/5/2014 9.17 PM”。如果我现在在地区设置为例如德语,只是时间会正确转换,而日期保持美国格式(所以“2014年10月5日21.17”而不是“5.10.2014 21.17”)。 我在这里做错了什么,或者我根本不明白整个事情;-)将c#dateTime格式化为本地字符串格式

回答

2

你对DateTime.ToString的假设是正确的。下面的代码打印2014年5月10日十三点26分36秒:

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE"); 
DateTime time = DateTime.Now; 
Console.WriteLine(time.ToString()); 

我检查什么的Thread.CurrentThread.CurrentCulture.ToString()值是在您的环境,并确保统一正确设置它。如果没有,你必须自己做。

+1

或者只是简单的'time.ToString(new CultureInfo(“de-DE”))' – GregoryHouseMD 2014-10-05 18:33:00

+0

这将有与上面相同的输出,但这听起来像他想要依赖线程的文化被正确设置来输出日期以用户的首选格式。 – 2014-10-05 18:34:49

+0

对,它应该根据当前的语言环境进行格式化。 一个奇怪的观察:当我把下面的行权在字符串格式化的前面,它正常工作: 'Thread.CurrentThread.CurrentCulture = CultureInfo.CurrentCulture;' AFAIK CultureInfo.CurrentCulture原则上应回Thread.CurrentThread .CurrentCulture,所以上面的说法没有多大意义。但是,这种方式...起作用......很奇怪。 – habitoti 2014-10-05 19:02:05