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