将字符串转换为DateTime的问题

时间:2019-03-16 02:26:26

标签: c# datetime

我有这个字符串:20190312T120000基本上是Icloud .ics文件中的开始事件值。

我如何转换:

20190312T120000.ToString("MM/dd/yyyy HH:mm:ss")格式。

我正在尝试使用Try.Parse和ParseExact,但没有成功。

是否有一些内置的方式,或者我必须手动进行。

3 个答案:

答案 0 :(得分:2)

您可以使用DateTime将其转换为ParseExact

var dateString = "20190312T120000";
var parsed = DateTime.ParseExact(dateString, "yyyyMMddTHHmmss", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);

我假设您提供的日期是UTC,但是如果是当地时间,则应将上面的代码写为:

var dateString = "20190312T120000";
var parsed = DateTime.ParseExact(dateString, "yyyyMMddTHHmmss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal);

这将假定日期位于执行代码时区的计算机中。

然后您可以像这样以目标格式编写它:

Console.WriteLine(parsed.ToString("MM/dd/yyyy HH:mm:ss"));

**请记住,DateTime对象本身没有任何格式-它们将日期存储为多个刻度,因此只有在将日期转换为string时才能格式化日期。 / p>

Try it online

答案 1 :(得分:1)

您可以使用DateTime.ParseExact()解析为DateTime。确切的格式字符串应为yyyyMMddTHHmmssDate and time string formats)。

然后,您可以按照自己喜欢的方式设置日期格式:

string datestring = "20190312T120000";
var dateTime = DateTime.ParseExact(datestring, "yyyyMMddTHHmmss", CultureInfo.InvariantCulture);

Console.WriteLine(dateTime.ToString("MM/dd/yyyy HH:mm:ss"));

// output
03/12/2019 12:00:00

答案 2 :(得分:0)

我不认为ICS日期时间(RFC 5545)在c#中具有内置转换。

您可以执行以下操作。首先需要将其放入Date对象中。

var format = "yyyyMMddTHHmmssZ";
var icsDate = "20190312T120000 ";

var date = DateTime.ParseExact(dateString, format, CultureInfo.InvariantCulture);

现在可以放入格式化的字符串了

var dateStr = date.ToString("MM/dd/yyyy HH:mm:ss");