不依赖于服务器/系统的统一日期格式

本文关键字:日期 格式 系统 依赖于 服务器 | 更新日期: 2023-09-27 17:49:19

我有一个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)