我编写了一个C#控制台应用程序,在它完成所有处理后,将DateTime
输出到磁盘。它是这样的:
writer.WriteLine(myDateTime)
。
使用以下内容阅读此DateTime
后,同样的控制台应用程序没有问题:
DateTime.Parse(reader.ReadLine())
但是,在我单独的Asp.Net
程序中尝试使用以下代码时,我收到一条错误消息,指出我的string
不是有效的DateTime
,至少可以说是奇怪的。
StreamReader reader = new StreamReader(@"D:\InformerReports\Archive\ReliabilityData\StartTime.hist");
string dateString = reader.ReadLine();
return DateTime.Parse(dateString);
我已经检查过它正在读的字符串是10/25/2016 12:00:00 AM
。
我还尝试使用return DateTime.ParseExact(dateString, "dd/MM/yyyy hh:mm:ss tt",null)
,但这会返回相同的错误。
我似乎无法理解为什么在同一个文件上执行的相同代码在一种情况下工作而不在另一种情况下工作。我很感激一些帮助。
答案 0 :(得分:7)
我猜服务器的文化与您正在测试的机器不同。
您必须使用的格式正确如下:
return DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt", null)
// 10/25/2016 12:00:00 AM
答案 1 :(得分:1)
作为之前答案的附加内容。 为了避免跨客户端的不同文化,您可以在global.asax文件Application_BeginRequest方法中设置网站文化,如下所示:
Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fr-FR");
Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("fr-FR");
这将强制为访问该网站的每个用户提供上述指定的文化。
我不确定这样做是否有缺点,但这在过去解决了我的问题。