xml - 将带有时区信息的 XML 时间日期类型转换为本地时间
问题描述
我正在编写一个函数来转换 XML Time 数据类型的 XML 字段,我遇到了以下(实际)问题:
当添加了时区信息时,如何将 XML Time 日期类型实际转换为本地时间。
<MyTime>14:16:20+02:00</MyTime>
由于夏令时/夏令时之类的原因,它并不像将其转换为 UTC 时间 (12:16:20) 并将其转换回您的本地时间那么简单。如果您有日期部分,这不是问题,因为您也有日期转换回 UTC,然后转换为该日期的本地时间。但是由于夏令时/夏令时,+02:00也可能取决于时间是什么时候写的,当然还有位置。例如,在荷兰,如果我使用这样的应用程序,它将时区信息添加到 Time 数据类型中,在夏季将其写入14:16:20+02:00但在冬季它将是14: 16:20+01:00。
因此,在不知道它何时编写的情况下,当从特定位置读取特定日期的 XML 时,我会得到以下信息:
Location = The Netherlands
Date of converting = 10 august 2021 (summertime, +02:00)
'14:16:20' => 14:16:20 (as there is no timezone)
'14:16:20+02:00' => 14:16:20 (if using date)
'14:16:20+01:00' => 15:16:20 (if using date)
Date of converting = 10 januari 2021 (wintertime, +01:00)
'14:16:20' => 14:16:20 (as there is no timezone)
'14:16:20+02:00' => 13:16:20 (if using date)
'14:16:20+01:00' => 14:16:20 (if using date)
我在 W3C 规范中找不到如何处理它,就像总是使用像 1-1-1970 这样的虚构日期来转换为/从 UTC 转换。
我可能会忽略时区信息,除非它是Z或+00:00,或者如果 testdate 已传递给函数。但也许有一种默认的处理方式,我只是在原始 W3C 规范中错过了它。
解决方案
您对您的技术限制没有说太多,但是在 XPath 3.1 中您可以使用format-dateTime($value, '[H01]:[M01]:[S01][Z01:01]', (), (), 'Europe/Amsterdam')
.
(实现可能在他们识别的时区名称上有所不同)。
推荐阅读
- java - 如何使用 Android Studio 安装第三方 apk,以便我创建的测试可以在第三方 apk 上运行?
- ngrx - 有条件地返回 Observable
在 Ngrx 效应中 - python - Django:+的不支持的操作数类型:'decimal.Decimal'和'dict'
- python - 如何从 python 脚本中的 ini 文件中读取和获取存储的值?
- javascript - jQuery 代码不适用于 wordpress 网站
- web-services - 使用 acunetix 扫描 REST API Web 服务
- ios - IOS:
:0:错误:未知参数:'-enable-batch-mode' 命令 CompileSwiftSources 失败,退出代码为非零 - node.js - 谷歌云跟踪自定义跟踪只工作几次
- c# - UWP ListView的SelectedItem在ListView在其他ListView大数据时被重置
- javascript - select2 触发更改调试