首先,我是新手级别的程序员,如果不清楚,我深表歉意。 我遇到的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有所不同。我不希望我的程序有错误的日期时间信息,所以如果有人可以帮助我弄清楚这一点,那就太棒了。
答案 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)
但说实话,我发现这令人困惑...