c# - 从 API 返回的日期有问题
问题描述
首先,我是新手级别的程序员,如果不清楚,我深表歉意。我正在访问的 API 返回“createdDate: 20190216T070519.000Z”或“EndTime: 20190217T190847.181Z”我不知道如何在 C# 中将其转换为 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));
只是看着它,它可能是一种 python 格式,%Y%m%dT%H%M%S.%fZ
但不确定,因为我不熟悉 Python,但一些在线搜索让我觉得它很接近。似乎它也是时区,可能与 UTC 或其他东西有差异。我不希望我的程序有错误的日期时间信息,所以如果有人能帮我解决这个问题,那就太棒了。
解决方案
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)
但老实说,我觉得这很混乱......
推荐阅读
- google-cloud-platform - 从谷歌云运行容器到达 gmail 的问题
- compiler-construction - 如何在其他语言(不是 C++)中使用 LLVM 作为后端?
- python - 如何使用变量来调用类?
- django - plotly js中的破折号回调的等价物是什么
- javascript - JS - 拦截属性变化
- abap - 在同一个表上循环时二进制搜索不起作用
- python - df.apply() 中的熊猫错误仅适用于特定数据帧
- c - 如果我在 while 循环中的工作完成,有什么方法可以停止 (c = getchar()) != EOF) ?
- javascript - 如何将按钮和文本放在同一行?
- pytorch - 如何通过 Pytorch 和 Optuna 进行交叉验证