【问题标题】:c# datetime string formatc# 日期时间字符串格式
【发布时间】:2014-11-26 23:11:25
【问题描述】:

似乎无法正确解决这个问题。我应该为以下DateTime 输入使用什么格式字符串?

2013-08-24T19:29:26.4050000

我想提取日期。

我试过了:

DateTime.ParseExact(localTime, "yyyy-MM-ddTHH:mm:ss.fffffff", null).ToString("yyyy-MM-dd");

但这对我不起作用,而且我觉得必须有一种方法可以避免末尾的多个“f”(我只需要日期,不在乎小时)

谢谢你,李

【问题讨论】:

  • DateTime.TryParse 不会为你做这些事情,我猜它应该很容易读取这种格式。或者您可以简单地从 T 中拆分日期并仍然获得您需要的内容。
  • “这对我不起作用”并没有说明会发生什么。请更具体。
  • 这看起来您没有将时间存储为 UTC。如果您将时间存储为 UTC,您可以将它们一致且轻松地转换为任何时区,而无需担心输入格式。
  • 这篇文章stackoverflow.com/questions/1536633/…似乎是你要找的一篇

标签: c# string datetime


【解决方案1】:

您没有向我们提供有关您的错误的任何信息,并且由于我们不了解您的文化,因此这里适用于 InvariantCulture

string localTime = "2013-08-24T19:29:26.4050000";
DateTime date = DateTime.ParseExact(localTime, "yyyy-MM-ddTHH:mm:ss.fffffff", CultureInfo.InvariantCulture);
Console.WriteLine(date);
Console.WriteLine(date.ToString("yyyy-MM-dd"));

输出将是;

8/24/2013 7:29:26 PM
2013-08-24

这里是 DEMO

【讨论】:

    【解决方案2】:

    这看起来像XMLDateTime 的格式,为此使用XmlCovert

    string fmt = "2013-08-24T19:29:26.4050000";
    var dt = XmlConvert.ToDateTime(fmt, XmlDateTimeSerializationMode.Unspecified);
    Console.WriteLine(dt);
    

    Ideone Demo

    【讨论】:

      【解决方案3】:

      看起来您正在解析 ISO 8601 日期时间字符串。这篇文章Parsing ISO 8601 string to DateTime in .NET?似乎是你要找的文章

      【讨论】:

        【解决方案4】:

        您也可以尝试以下解决方案,以字符串变量中的 dd/MMM/yyyy 格式获取结果:

        string _dateTime=string.Empty;
        
        _dateTime=localTime.ToString(dd/MMM/yyyy);
        

        因此,对于日期 2013-08-24T19:29:26.4050000 将返回 24/Aug/2013

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-08-10
          • 2023-03-14
          • 1970-01-01
          • 1970-01-01
          • 2015-07-23
          • 2014-04-26
          • 2020-05-29
          • 2017-06-14
          相关资源
          最近更新 更多