我有一个ASP。. NET/c#网站我正在建设,在其中一个页面中,我要求用户选择一个日期,我自己的日期选择器将日期发送到我的代码后面的"dd/MM/yyyy"格式。
当网站在线时,问题开始,我的计算机使用"dd/MM/yyyy"格式,服务器使用"MM/dd/yyyy"格式,所以当我尝试将代码后面收到的日期转换为使用"convert . todatetime()"在我自己的PC上它工作得很好,但是当网站在线时,如果日期是例如"14/05/2015"它会导致一个字符串不被识别为有效的日期时间。'错误,因为它试图将其转换为导致其为非法日期(14个月的第5天)的格式。
这个问题最好的解决方案是什么?谢谢。
以固定格式发送日期,如ISO (yyyy-MM-dd
)。如果各方使用相同的格式,就不会产生歧义。
您需要将特定的CultureInfo
或格式字符串传递给所有日期解析和ToString()
调用。
我有过用ISO格式格式化日期的最佳经验。它定义良好,不可能混淆。
例如:DateTime.Now.ToString("o")
这将产生:
2015-07-04T16:56:54.2508072+01:00
为了双重确定,您总是可以这样解析它:
DateTime.ParseExact(dateAsStr, "o", CultureInfo.InvariantCulture)