具有不同文化的日期时间转换

时间:2012-02-09 18:12:56

标签: c# .net asp.net-mvc asp.net-mvc-3 .net-4.0

我想知道如何转换日期时间的最佳方法是什么? 现在我的电脑设置为dd/mm/yyyy但我的日期为mm/dd/yyy,所以当我尝试

DateTime.Convert();
DateTime.Parse();
DateTime.TryParse();

我要么得不到任何回报,要么崩溃。现在我可以告诉它mm/dd/yyyy格式,它可能会转换。但问题是这些日期来自用户上传的文件。

它们可以是任何格式组合。我正试图找到办法。

我看到的问题是我正在查看上传文件中的日期,所以我不确定看看浏览器日期格式是否有帮助。

我正在使用asp.net mvc,我正在尝试自动处理日期格式的解决方案,所以我不必向用户询问他们的日期格式(我想我要问他们的东西越多)用户继续使用的可能性越小)

2 个答案:

答案 0 :(得分:1)

不,您无法自动计算出用户在服务器上使用该值后要使用的日期时间格式。您需要更多信息才能正确解析它(例如1/2/3可能意味着很多不同的日期,具体取决于文化)。

考虑以下解决方案之一:

  1. 在将客户端发送到服务器之前,使用客户端上的JavaScript将输入的日期转换为标准格式(即ISO 8601 - 2012-02-09)的文本表示形式。代码看起来像这样:d.getUTCFullYear()+"-" + d.getUTCMonth() + "-" + d.getUTCDate()
  2. 将本地文化信息与要转换的日期值一起发送到服务器,并在服务器上进行转换。
  3. 强制用户以特定格式输入日期(例如,使用标有“月”,“日”和“年”的3个文本框,而不是一个带有免费输入的文本框)。

答案 1 :(得分:1)

chobo2(我喜欢'手柄'):)

您可以检测语言环境文化并随意处理。请参阅以下SO Q / A以获取指示:

Where is the system locale/culture set for .Net

关键是不必特别设置任何内容,但要确定区域设置并采取相应的行动。