【问题标题】:Convert date in string to DateTime C# [duplicate]将字符串中的日期转换为 DateTime C# [重复]
【发布时间】:2013-06-19 03:21:32
【问题描述】:

我得到以下格式的日期:

07 December, 2012
7 December, 2012
December 07, 2012
12/07/2012
12/7/2012

在一个字符串变量中,我必须从中识别日期、月份、年份。日期可以是上述任何格式的字符串。我想知道必须有一个代码可以将日期的所有可能性处理为字符串数据类型。我的意思是我想将日期作为字符串传递并获取 DateTime 对象。

【问题讨论】:

    标签: c# asp.net .net string datetime


    【解决方案1】:

    是的,将DateTime.ParseExact 与所有可能的允许格式一起使用:

    var strings = new[] { "07 December, 2012", "7 December, 2012", "December 07, 2012", "December 07, 2012", "12/07/2012", "12/7/2012" };
    var formats = new[]{"dd MMMM, yyyy", "d MMMM, yyyy", "MMMM dd, yyyy", "dd/MM/yyyy", "dd/M/yyyy"};
    var dates = strings
        .Select(s => DateTime.ParseExact(s, formats, CultureInfo.InvariantCulture, DateTimeStyles.None));
    foreach(DateTime d in dates)
        Console.WriteLine("Year:{0} Month:{1} Day:{2}", d.Year , d.Month , d.Day);
    

    Demo

    我使用CultureInfo.InvariantCulture 来强制使用日期分隔符/,这通常是您当前文化的日期分隔符(请参阅The "/" Custom Format Specifier)。

    【讨论】:

      【解决方案2】:

      我不确定 DateTime.TryParse() 是否能正确处理它们,但这是我会尝试的第一件事。

      http://msdn.microsoft.com/en-us/library/ch92fbc1.aspx

      【讨论】:

      • 或 DateTime.TryParseExact()
      • 感谢 DateTime.TryParse() 效果很好。
      • 这不适用于任何文化。除此之外,如果问题是确保可以将给定的字符串解析为 DateTime。 TryParse 不能保证,只能保证不引发异常。此外,TryParseExact 会更好,因为它允许使用自定义格式字符串。
      • @Tim - 除此之外,Try Parse 验证传递的日期字符串是否正确?这就是TryParse 的魅力所在。所以我会说 +1 丹尼斯
      • @Tim - 恐怕要说 - 当类型为字符串时,我们甚至可以获得有效日期。
      【解决方案3】:
      DateTime.Parse("date string" ) 
      

      【讨论】:

        猜你喜欢
        • 2012-12-05
        • 2018-10-19
        • 2013-03-12
        • 1970-01-01
        • 2014-01-06
        • 1970-01-01
        • 2022-01-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多