繁体   English   中英

在Windows Server 2016上,字符串未被识别为有效的日期时间

[英]string was not recognized as a valid Datetime on Windows Server 2016

我创建了一个使用DateTime.ParseExact的应用程序,方法如下:

DateTime.ParseExact(extractedFileDate, "ddd MMM dd HH:mm:ss yyyy", CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None);

extractedFileDate存储带有日期的字符串,例如:“Tue Oct 08 12:07:13 2013”

当我在Windows 10上从我的计算机上运行我的应用程序时,一切运行顺利,但是当我尝试在Windows Server 2016上运行相同的应用程序时,我得到“字符串未被识别为有效的日期时间”错误按摩。

日期字符串的内容显示的是相同的值。

它能是什么?

大卫。

文化具有DateTimeInfo ,其中包含有关如何解析字符串的特定信息。 例如,一年中几个星期的星期几的名称。

您的格式字符串包含ddd MMM和用于解析Tue Oct字符串,因此当服务器配置了另一种文化时,这可能是问题。

您正在使用CultureInfo.CurrentCulture 在解析字符串时尝试使用您的桌面文化。

更新:在您的评论中,您会问如何支持多种文化。 在数据传输或存储的情况下,最好的方法是在(de)序列化DateTime时使用CultureInfo.InvariantCulture 这种文化独立于当地环境。 向用户呈现(在GUI中)时,请使用默认(用户配置的)文化。

解:

DateTime.ParseExact(extractedFileDate, "ddd MMM dd HH:mm:ss yyyy", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM