【问题标题】:String to date parsing error "String was not recognized as a valid DateTime."字符串到日期解析错误“字符串未被识别为有效的日期时间。”
【发布时间】:2014-04-22 06:57:31
【问题描述】:

在我下面的属性中,我将字符串解析为日期时间。

public virtual string StartTimeLocal
{
    set { StartTime = DateTime.Parse(value).ToUTCDateTime(); }
}

刚刚签入的值我有26/1/2014 02:17 PM

你能帮我解决我做错了什么以及如何纠正吗?

【问题讨论】:

  • 如果将DateTime.Parse(value) 更改为DateTime.Parse(value, CultureInfo.InvariantCulture) 会怎样? (向在我之前到达那里的@Mzf 道歉)
  • 如果您询问有关解析错误的问题,您应该始终包含您的文化(例如 en-US)。顺便说一句,你为什么将一个字符串而不是 DateTime 传递给这个属性?
  • @TimSchmelter 到第二部分,看起来这个属性将接受一个输入字符串,然后在 StartTime 属性上设置 DateTime,该属性一个 DateTime,标准化为 UTC。
  • @ClickRick:是不是已经有一种方法可以用于此目的:DateTime.ToUniversalTime
  • 没错,我忘记了这一点,但在某些情况下,属性仍然需要获取字符串。它确实取决于应用程序,以及它的使用位置/方式。

标签: c# .net string datetime


【解决方案1】:

DateTime.Parse 解析标准日期和时间格式你的字符串不是其中之一。

您可以改用DateTime.TryParseExactDateTime.ParseExact 方法。

string s = "26/1/2014 02:17 PM";
DateTime dt;
if(DateTime.TryParseExact(s, "dd/M/yyyy hh:mm tt", 
                          CultureInfo.GetCultureInfo("en-US"), 
                          DateTimeStyles.None, out dt))
{
   Console.WriteLine(dt);
}
else
{
   //Your string is not a valid DateTime.
}

【讨论】:

  • 他的字符串是标准的,用于 en-US 文化。如果您的本地文化设置为 en-US 或明确设置文化,它会正常工作。
  • @MarcinJuraszek,你能建议我应该做些什么改变吗?我正在从 csv 文件中获取数据?
  • @Soner Gönül,你能建议我如何解决它吗?我不知道这种文化是如何运作的,我的数据来自 csv 文件。
  • @MarcinJuraszek:这个字符串适用于 168 种文化,不仅适用于美国。
【解决方案2】:

您的输入使用 en-US 文化设置进行格式化,因此您应该确保您的应用程序在本地文化设置为 en-US 的系统上运行,或者明确指定文化:

public virtual string StartTimeLocal
{
    set { StartTime = DateTime.Parse(value, CultureInfo.GetCultureInfo("en-US")).ToUTCDateTime(); }
}

【讨论】:

    【解决方案3】:

    试试下面的:

    CultureInfo provider = CultureInfo.InvariantCulture;
    format = "dd/MM/yyyy hh:mm tt";
    result = DateTime.ParseExact(dateString, format, provider);
    

    【讨论】:

    • MMM 更适合,因为 OP 使用 1 而不是 01
    • @Mzf 对不起同样的结果。
    • 你试过M而不是MM吗?
    • 我更新了答案 - 我在日期格式末尾不需要/
    猜你喜欢
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2013-02-07
    • 2011-12-15
    相关资源
    最近更新 更多