不依赖 server/system 的统一日期格式
Unified Date format with no reliance to the server/system
我正在构建一个 ASP.NET / C# 网站,
在其中一个页面中,我要求用户使用我自己的日期选择器选择一个日期,该日期选择器以 "dd/MM/yyyy" 格式将日期发送到我的代码隐藏。
问题出现在站点在线时,我的电脑使用 "dd/MM/yyyy" 格式,服务器使用 "MM/dd/yyyy" 格式,所以当我尝试转换代码中收到的日期时 -在我自己的 PC 上使用 "Conver.ToDateTime()" 转换为 DateTime 类型它工作得很好,但是当网站在线时,如果日期是例如“14/05/2015”,它将导致 'String was not recognized as a valid DateTime.' 错误,因为它试图将其转换为导致其成为非法日期(第 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)
我正在构建一个 ASP.NET / C# 网站, 在其中一个页面中,我要求用户使用我自己的日期选择器选择一个日期,该日期选择器以 "dd/MM/yyyy" 格式将日期发送到我的代码隐藏。
问题出现在站点在线时,我的电脑使用 "dd/MM/yyyy" 格式,服务器使用 "MM/dd/yyyy" 格式,所以当我尝试转换代码中收到的日期时 -在我自己的 PC 上使用 "Conver.ToDateTime()" 转换为 DateTime 类型它工作得很好,但是当网站在线时,如果日期是例如“14/05/2015”,它将导致 'String was not recognized as a valid DateTime.' 错误,因为它试图将其转换为导致其成为非法日期(第 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)