C# 统一的日期格式,不依赖服务器/系统

C# 统一的日期格式,不依赖服务器/系统,c#,asp.net,date,datetime,localization,C#,Asp.net,Date,Datetime,Localization,我正在建立一个ASP.NET/C网站, 在其中一个页面中,我要求用户使用我自己的日期选择器选择一个日期,该选择器以“dd/MM/yyyy”格式将日期发送到我的代码 当站点联机时,问题就开始了,我的计算机使用的是“dd/MM/yyyy”格式,服务器使用的是“MM/dd/yyyy”格式,因此当我尝试在我自己的PC上使用“Conver.ToDateTime()”将代码中接收到的日期转换为日期时间类型时,它可以正常工作,但当站点联机时,如果日期是例如“14/05/2015”这将导致“字符串未被识别为有效

我正在建立一个ASP.NET/C网站, 在其中一个页面中,我要求用户使用我自己的日期选择器选择一个日期,该选择器以“dd/MM/yyyy”格式将日期发送到我的代码

当站点联机时,问题就开始了,我的计算机使用的是“dd/MM/yyyy”格式,服务器使用的是“MM/dd/yyyy”格式,因此当我尝试在我自己的PC上使用“Conver.ToDateTime()”将代码中接收到的日期转换为日期时间类型时,它可以正常工作,但当站点联机时,如果日期是例如“14/05/2015”这将导致“字符串未被识别为有效的日期时间。”错误,因为它试图将其转换为非法日期(14个月的第5天)的格式


这个问题最好的解决方案是什么?谢谢。

以固定格式发送日期,如ISO(
yyyy-MM-dd
)。如果所有参与方使用相同的格式,就不会有歧义。

您需要将特定的
文化信息
或格式字符串传递给所有的日期解析和
ToString()
调用。

我有过使用ISO格式格式化日期的最佳经验。它定义明确,不可能混淆

例如:

DateTime.Now.ToString("o")
这将产生:

2015-07-04T16:56:54.2508072+01:00
可以肯定的是,您总是可以这样解析它:

DateTime.ParseExact(dateAsStr, "o", CultureInfo.InvariantCulture)

问题是,当使用Convert.ToDate()的内置函数时,它试图将我的字符串转换为“MM/dd/yyyy”格式。您可以使用DateTime.ParseExact(“yyyy-MM-dd”)@argamanza。我从来都不是
Convert
类的粉丝。使用,可以指定日期格式。