【问题标题】:Can this date be converted automatically?这个日期可以自动转换吗?
【发布时间】:2012-05-14 21:02:29
【问题描述】:

我知道 C# 有一些很棒的日期转换工具。我想知道的是我是否可以自动将此字符串转换为日期对象:

"Fri May 11 00:00:00 EDT 2012"

我想我必须手动解析月、日和年,但我希望有一种更简单的内置方法。任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • 时区是静态的,还是会得到不同时区的日期?
  • 时区是静态的。我真的不在乎它。我只想要月份、日期和年份。时间对于应用程序并不重要。感谢您的帮助!

标签: c# .net parsing datetime date


【解决方案1】:

您可以使用DateTime.ParseExactDateTime.TryPraseExact 提供自定义格式:

DateTime result;
if (!DateTime.TryParseExact(
        "Fri May 11 00:00:00 EDT 2012", 
        "ddd MMM dd HH:mm:ss EDT yyyy", 
        CultureInfo.InvariantCulture, 
        DateTimeStyles.None, 
        out result)) {
    // handle invalid date
}

所有格式选项都列在 MSDN 上的 Custom Date and Time Format Strings 页面上。

【讨论】:

  • 唯一的问题是 "EDT" 部分是硬编码的,但它看起来适用于您的场景。
【解决方案2】:

Convert.ToDateTime("Fri May 11 00:00:00 EDT 2012") 应该可以正常工作。

【讨论】:

  • 无视。我错过了年份在字符串的末尾。
【解决方案3】:

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

看看那个。应该能帮到你。

例子:

   // Convert a string returned by DateTime.ToString("R").
      String dateString = "Sat, 10 May 2008 14:32:17 GMT";
      ConvertToDateTime(dateString);

【讨论】:

    【解决方案4】:

    是的,您可以将字符串解析为 DateTime 对象:

    String format = "ddd MMM dd hh:mm:ss EDT yyyy";
    String dateString = "Fri May 11 00:00:00 EDT 2012";
    DateTime result = DateTime.ParseExact(dateString, format, CultureInfo.InvariantCulture);
    

    【讨论】:

    • 你说得对,似乎无法解析时区......但是我认为我的回答并不完全错误......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 2011-01-09
    相关资源
    最近更新 更多