从API返回的日期有问题

时间:2019-02-17 04:40:42

标签: c# python visual-studio datetime timezone

首先,我是新手级别的程序员,如果不清楚,我深表歉意。 我遇到的API返回“ createdDate:20190216T070519.000Z”或“ EndTime:20190217T190847.181Z”,我不知道如何在C#中将其转换为DateTime。

这作为字符串返回,我得到

  

字符串未被识别为有效的DateTime。

我尝试过类似的操作,但是我无法知道源格式或此.000Z代表什么,我怀疑它是时区。

DateTime.ParseExact(createdDate, "yyyyMMddpHHmmss.fffZ",CultureInfo.InvariantCulture);

也有这样的想法,虽然会帮助但不确定使用createdDate.Substring(16, 3)部分。

MessageBox.Show(createdDate.Substring(0, 8) +" @ "+ createdDate.Substring(9, 6) + " @ " + createdDate.Substring(16, 3));

仅查看一下,它可能是%Y%m%dT%H%M%S.%fZ的python格式,但是不确定,因为我对Python不熟悉,但是一些在线搜索使我觉得它很接近。也似乎是时区,可能与UTC有所不同。我不希望我的程序有错误的日期时间信息,所以如果有人可以帮助我弄清楚这一点,那就太棒了。

1 个答案:

答案 0 :(得分:1)

Z表示UTC。如果存在非UTC的时区,则通常将其指定为偏移量-600或沿这些方向的某处

关于日期解析,您已经接近:

DateTime.ParseExact(createdDate,"yyyyMMddTHHmmss.fffK",CultureInfo.InvariantCulture)

C#使用K代表“种类”,可以是UTC或本地或未定义

有些人固执己见,会说您需要像这样将T放在单引号'T'中,

DateTime.ParseExact(createdDate,"yyyyMMdd'T'HHmmss.fffK",CultureInfo.InvariantCulture)

但说实话,我发现这令人困惑...