这个问题在这里已有答案:
我有这个字符串:20190312T120000
基本上是Icloud .ics文件中的一个启动事件值。
我怎么能转换:
20190312T120000
到.ToString("MM/dd/yyyy HH:mm:ss")
格式。
我试图使用Try.Parse和ParseExact但没有成功。
是否有一些内置方式或我必须手动完成。
我不相信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");
你可以使用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
时格式化日期。
你可以使用DateTime.ParseExact()
解析为DateTime
。确切的格式字符串是yyyyMMddTHHmmss
(Date 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