如何在.NET中将此字符串格式化为DateTime

时间:2017-05-22 10:54:02

标签: c# .net

这就是我的尝试:

string format = "yyyy-MM-dd'T'HH:mm:ss";
DateTime parsedDateTime;
if (DateTime.TryParseExact(reader.Value.ToString(),format, null, 
              System.Globalization.DateTimeStyles.None, out parsedDateTime))
{
    return parsedDateTime;
}

其中reader.Value.ToString()

  

2017-05-01T00:00:000

2 个答案:

答案 0 :(得分:5)

你的问题是你的字符串中的3位秒数:

  

2017-05-01T00:00:000

秒的范围是[0:59]

要么是毫秒,那么您需要将格式调整为:

string format = "yyyy-MM-ddTmm:ss:fff";

或字符串完全错误,你应该删除第三个数字。这是一个有效的例子:

string format = "yyyy-MM-ddTHH:mm:ss";
DateTime parsedDateTime;
if (DateTime.TryParseExact("2017-05-01T00:00:00", format, null,
      System.Globalization.DateTimeStyles.None, out parsedDateTime))
{
     Console.WriteLine(parsedDateTime.ToString());
}
else
{
    Console.WriteLine("FAIL");
}

答案 1 :(得分:1)

您可以使用f for milliseconds

var d = DateTime.ParseExact("2017-05-01T12:34:567", "yyyy-MM-ddTHH:mm:ssf", null); //700 ms

如果您只需要日期:

var d = DateTime.Parse("2017-05-01T12:34:567".Split('T')[0]);

或只删除最后一位数字:

var d = DateTime.Parse("2017-05-01T12:34:567".Remove(19));