从API返回的日期有问题

问题描述 投票:0回答:1

首先,我是一名新手级程序员,如果不清楚,我道歉。我正在点击的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或其他东西的差异。我不希望我的程序有错误的日期时间信息,所以如果有人可以帮我解决这个问题,那就太棒了。

c# python visual-studio datetime timezone
1个回答
1
投票

Z表示UTC。如果存在除UTC之外的时区,则通常将其指定为偏移-600或沿着这些线的某些东西

至于你的日期解析,你很接近:

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

C#使用K代表'Kind',可以是UTC或Local或undefined

有些人是坚持者,并且会说你需要把T单引号'T'这样,

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

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

© www.soinside.com 2019 - 2024. All rights reserved.