dataweave - Dataweave 日期格式为 GMT 时区,夏令时
问题描述
我正在尝试使用 GMT 时区进行日期格式化。但是夏季和冬季时间的偏移量是相同的。它适用于 CET 时区。想知道为什么格林威治标准时间不同?
尝试了以下数据编织
期待
"GMT":
"date-GMT-Winter": "2019-12-15T13:00:00+00:00",
"date-GMT-Summer": "2019-08-15T13:00:00+01:00"
但实际
"GMT":
"date-GMT-Winter": "2019-12-15T13:00:00Z",
"date-GMT-Summer": "2019-08-15T13:00:00Z"
output application/json
var CET_timezone_winter = "2019-12-15T13:00:00" as DateTime >> "CET" as String {format: "xxx"}
var CET_timezone_summer = "2019-08-15T13:00:00" as DateTime >> "CET" as String {format: "xxx"}
var GMT_timezone_winter = "2019-12-15T13:00:00" as DateTime >> "GMT" as String {format: "xxx"}
var GMT_timezone_summer = "2019-08-15T13:00:00" as DateTime >> "GMT" as String {format: "xxx"}
---
{
'date2': now(),
"timeZoneOffset-xxx" : now() as String {format: "xxx"},
'CET':
{
'date-CET-Winter': CET_timezone_winter,
'date-CET-Summer': CET_timezone_summer
},
'GMT':
{
'date-GMT-Winter': GMT_timezone_winter,
'date-GMT-Summer': GMT_timezone_summer
}
}
解决方案
夏令时不适用于 GMT(或 UTC)
见https://www.timeanddate.com/time/gmt-utc-time.html
UTC 和 GMT 都不会改变夏令时 (DST)。但是,一些使用 GMT 的国家/地区会在其 DST 期间切换到不同的时区。
例如,英国全年不使用 GMT,它在夏季使用比 GMT 早一小时的英国夏令时 (BST)。
如果您想获得全年的英国/伦敦时间(格林威治标准时间和夏令时的夏令时),您可以使用以下 Dataweave(我添加了新字段进行比较)
output application/json
var CET_timezone_winter = "2019-12-15T13:00:00" as DateTime >> "CET" as String {format: "xxx"}
var CET_timezone_summer = "2019-08-15T13:00:00" as DateTime >> "CET" as String {format: "xxx"}
var GMT_timezone_winter = "2019-12-15T13:00:00" as DateTime >> "GMT" as String {format: "xxx"}
var GMT_timezone_summer = "2019-08-15T13:00:00" as DateTime >> "GMT" as String {format: "xxx"}
var london_timezone_winter = "2019-12-15T13:00:00" as DateTime >> "Europe/London" as String {format: "xxx"}
var london_timezone_summer = "2019-08-15T13:00:00" as DateTime >> "Europe/London" as String {format: "xxx"}
---
{
'date2': now(),
"timeZoneOffset-xxx" : now() as String {format: "xxx"},
'CET':
{
'date-CET-Winter': CET_timezone_winter,
'date-CET-Summer': CET_timezone_summer
},
'GMT':
{
'date-GMT-Winter': GMT_timezone_winter,
'date-GMT-Summer': GMT_timezone_summer
},
'London': {
'date-London-Winter': london_timezone_winter,
'data-London-Summer': london_timezone_summer
}
}
输出为 JSON:
{
"date2": "2019-09-24T15:25:17.574Z",
"timeZoneOffset-xxx": "+00:00",
"CET": {
"date-CET-Winter": "2019-12-15T14:00:00+01:00",
"date-CET-Summer": "2019-08-15T15:00:00+02:00"
},
"GMT": {
"date-GMT-Winter": "2019-12-15T13:00:00Z",
"date-GMT-Summer": "2019-08-15T13:00:00Z"
},
"London": {
"date-London-Winter": "2019-12-15T13:00:00Z",
"data-London-Summer": "2019-08-15T14:00:00+01:00"
}
}
推荐阅读
- c++ - 空 std::array
没有 constexpr begin() 吗? - flutter - 如何在颤振小部件之间发送地图?
- mariadb-10.4 - mariadb-secure-installation 在源安装后不起作用
- css - Flip Card 两侧的鼠标滚轮无法聚焦和滚动
- uml - 哪些 uml 图可用于数据科学项目
- rabbitmq - 在 Axon 中按顺序处理两个事件
- node.js - 无法从 docker 容器中的 nodejs 服务器连接到 postgres、redis:连接 ECONNREFUSED
- angular - Angular 8,Firebase 根据 UID 的集合显示用户
- core-data - 如何使用内置核心数据 XML 序列化?
- excel - 是否可以像这样通过powershell读取Excel?