【问题标题】:DateTime.ParseExact Giving Un Expected Error [duplicate]DateTime.ParseExact 给出意外错误 [重复]
【发布时间】:2018-03-29 18:40:41
【问题描述】:

我遇到了一些我无法找到解决方案的问题。 这是我的代码

string DateString = System.DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss tt");
string Format = "dd/MM/yyyy hh:mm:ss tt";
DateTime DT = DateTime.ParseExact(DateString, Format, CultureInfo.InvariantCulture);
string DTE = DT.ToString("dd/MM/yyyy");

代码正在提取我在下面粘贴的错误。请告诉我到底是什么问题(我的系统日期和时间已设置为 2018 年 3 月 29 日,我根本不想更改它)这是错误

Error Picture

【问题讨论】:

  • 哪行代码给出了错误?你调试了吗?您共享的代码和异常的堆栈跟踪不匹配。
  • 您是否尝试在控制台应用程序中运行此代码?
  • 是的,看起来你在写。请帮助我,当我在当前页面中调试此应用程序时,它不会在任何行显示任何错误,但是一旦完成所有代码(我逐行检查它们在任何行中都没有错误),它就会转到 global.asax并显示我粘贴的这个错误。
  • 此外,如果我将系统日期更正为 dd/mm/yyyy 格式,它不会给出任何类型或错误,看起来 PC 格式的日期与它有关。我在更改系统中的日期格式时没有任何问题,但是当将其上传到 IIS 并从 Web 服务器加载网站时,它会将日期格式更改为 m/d//yyyy。这是他们更改日期格式的任何方式在 IIS 中到 mm/dd/yyyy?请更新。请帮助这是应用程序中唯一的障碍。
  • @Chetan Ranpariya 请帮帮我。

标签: c# asp.net .net


【解决方案1】:

在将 DateTime 转换为字符串期间,您还应该使用 CultureInfo.InvariantCulture。如果您不这样做,DateString 将被转换为您的机器文化,但您再次转换回文化不变量。这可能会导致问题。

例如:当我使用您的代码时,DateString 对 tt 字段有“OS”值,然后我尝试使用 CultureInvariant 转换为 DateTime,OS 无法解决。

string DateString = System.DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
string Format = "dd/MM/yyyy hh:mm:ss tt";
DateTime DT = DateTime.ParseExact(DateString, Format, CultureInfo.InvariantCulture);
string DTE = DT.ToString("dd/MM/yyyy");

【讨论】:

    猜你喜欢
    • 2017-10-22
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 2017-12-29
    相关资源
    最近更新 更多