【问题标题】:Parse DateTime using C# [duplicate]使用 C# 解析 DateTime [重复]
【发布时间】:2012-07-25 05:54:12
【问题描述】:

可能重复:
Parse Datetime string

我正在尝试在 C# 中解析以下 DateTime:

string date = "Wed Jul 25 19:41:36 2012 +0200"
DateTime result = DateTime.Parse(date);

我收到以下错误:

System.FormatException : String was not recognized as a valid DateTime.

有人知道这里有什么问题吗?

【问题讨论】:

  • @PeterRitchie 如果您忽略格式,肯定是重复的,我现在已经亲自回答了其中的 3 个,但是技术上格式每次都改变了 :-)
  • 不确定为什么人们以重复的形式关闭...告诉 OP 解析字符串 exist 并不能回答整个问题。

标签: c# .net string datetime


【解决方案1】:

您需要指定解析格式,因为那是非标准的。 DateTime.ParseExact 允许您指定格式。

这样的事情会起作用,但是我还没有验证那个时区部分是否正常工作,似乎给了我一个 1800 小时的日期/时间...... 啊,这是因为我所在的地方是英国夏令时 (GMT +1)。

    static void Main(string[] args)
    {
        string date = "Wed Jul 25 19:41:36 2012 +0200";
        string format = "ddd MMM dd HH:mm:ss yyyy %K";
        //string format = "ddd MMM dd HH:mm:ss yyyy zzz"; // Also works.
        DateTime dateTime = DateTime.ParseExact(date, format, CultureInfo.InvariantCulture);
        Console.ReadLine();
    }

DateTime 字符串格式化选项记录在here,您可以使用这些的任意组合创建解析字符串以成功解析DateTime

另一个例子可以在这里找到:Parse DateTime From Odd Format

【讨论】:

    【解决方案2】:

    您可以为此使用DateTime.ParseExact()。例如

    更新:

    string dateString = "Your date";
    string format = "ddd MMM dd HH:mm:ss yyyy %K";
    DateTime dateTime = DateTime.ParseExact(dateString, format, 
                  CultureInfo.InvariantCulture);
    Console.WriteLine(dateTime);
    

    Documentation HereDateTime 字符串格式选项here

    You can also view here {Complr.com}

    【讨论】:

    • 不要挑剔,因为它非常接近,但它不满足 OP 包含的时区偏移量。
    • 经过一番研究,我刚刚更新了答案。对不起第一个。
    • 好的,谢谢,我会接受你的回答,你是第一个......
    • @AdamHouldsworth 感谢您提供有关格式的链接。我也赞成您的回答。
    • @John 没问题,编辑后同上 :-)
    猜你喜欢
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多