【问题标题】:DateTime Format Exceptions and Computer Date FormatDateTime 格式异常和计算机日期格式
【发布时间】:2011-05-20 05:03:07
【问题描述】:

我的团队正在使用 SQL Server Express R2 上的 C# 在 Asp.Net 中构建一个 Web 应用程序。目前,我们在 Visual Studio 2010 中进行开发,数据库托管在单独的服务器上。我们正在家用计算机的开发服务器上运行该应用程序。

如果我将家用计算机的日期格式更改为 d/M/yyyy 并在 M/d/yyyy 中为我的代码更改我想要的日期格式,我会收到错误.它接受截至该月 12 日的日期,因为它假定日字段实际上是月字段。之后,当我尝试将字符串转换为 DateTime 时,我得到了一个巨大的格式异常。这是一个大问题,我们的客户希望日期格式为 M/d/yyyy。

我已经尝试了所有我能想到的!

更改 web.config 不起作用:

<globalization culture="auto:en-US" uiCulture="auto:en" />

转换时使用格式:

String strDate = myDate.ToString("M/d/yyyy")

在转换时使用格式和文化信息:

DateTime myDate = Convert.ToDateTime(strDate, new CultureInfo("en-CA"));

这些都不行!我们现在正处于紧要关头,我希望能提供有关此事的任何信息。目前,我只能希望当我们在实际服务器上运行它时,如果服务器的日期格式正确,它就能正确运行。

【问题讨论】:

  • 你们区域设置的日期格式是什么?

标签: asp.net datetime formatting


【解决方案1】:
 DateTime.ParseExact("12/15/2009", "M/d/yyyy", new CultureInfo("en-CA"));

这应该可以工作

【讨论】:

  • 你能否给我任何其他信息,说明为什么它首先会这样做?为什么它使用我电脑的日期格式?
  • 说实话,我不知道,我以前遇到过这种情况;日期时间转换始终是一个问题......据我可以从 MSDN 文档中收集到,虽然 Convert.ToDateTime 不能正常工作,即使它应该工作,我发现最好的方法是将 parseexact 与你的日期格式一起使用,你可以得到保证那会起作用的
  • 这似乎是问题之一,执行以下代码: CultureInfo ci = new CultureInfo("en-CA");字符串 patternShort = ci.DateTimeFormat.ShortDatePattern;字符串 patternLong = ci.DateTimeFormat.LongDatePattern;使用我的代码,shortdate 实际上是我的机器设置的,而不是 M/d/yyyy,这可能是它导致错误的原因,尽管我不完全确定 Convert 使用什么格式。
  • 好的,谢谢。最后一个问题,如何以“hh:mm tt”格式包含时间?这可能吗?
  • 是的,您只需将第二个字符串替换为您要传入的任何日期格式:即 DateTime.ParseExact("12/15/2009 10:50 pm", "M/ d/yyyy hh:mm tt",新 CultureInfo("en-CA"))。但是请记住,因为您使用的是精确解析,所以您传递的日期时间应该包括字符串中指定的每个细节
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
相关资源
最近更新 更多