将字符串转换为DateTime [重复]

问题描述 投票:-1回答:3

这个问题在这里已有答案:

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

我怎么能转换:

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

我试图使用Try.Parse和ParseExact但没有成功。

是否有一些内置方式或我必须手动完成。

c# datetime
3个回答
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");

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时格式化日期。

Try it online


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
© www.soinside.com 2019 - 2024. All rights reserved.