2013-02-01 76 views
0

我有这样的:日期时间格式化返回奇怪的结果

DateTime date = new DateTime(); 

,然后我打印出来。下面是结果:

本地主机:

date: 1/1/0001 12:00:00 AM 

在服务器:

date: 1-1-0001 0:00:00 

正确的方法是在本地主机上的一个。如何解决这个问题,为什么会发生这种情况?这是相同的代码。

+7

不同的机器 – sll

+0

它可能是你的服务器有不同的时间和时区 –

+1

对于“奇怪”阅读“根据记录的行为正确的结果”。 –

回答

5

由于不同地区在不同的机器上设置不同。对你有ahve指定格式字符串explciitly相同的格式日期时间输出:

date.ToString("yyyy-MM-dd HH:mm:ss"); 

而且约翰特别建议在下面的评论,如果你想有在不同的机器上的相同格式的日期时间的输出,尽管本地区域设置你可以使用InvariantCulture格式提供程序:

date.ToString(CultureInfo.InvariantCulture); 

MSDN

固定区域性是文化不敏感;它与 的英语,但不与任何国家/地区

MSDN相关:

+1

请注意,自定义格式说明符通常最好与不变文化相结合,而标准格式说明符在指定“用户”文化时适用(例如US)。 –

+0

有趣的是,我知道应该使用“InvariantCulture”完成日志记录,所以它是否更好地为'dateTime.ToString()'指定'InvariantCulture'? – sll

+1

这取决于你想要做什么。如果您试图向用户展示某些内容,则应该在其用户区域中使用其中一种标准格式。如果你提供的数据可以被另一台计算机所理解,那么不变式文化就更合适。 –

0

可以使用不变的文化,以显示你的约会如果你不太关心格式,只要它一直都是一样的。

date.ToString(System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat); 
0

显示日期你那里显示的方式,你可以使用:

date.ToString("M/d/yyyy hh:mm:ss tt"); 

或使用格式字符串时:由于不同的区域设置上的

string.Format("date: {0:M/d/yyyy hh:mm:ss tt}", date);