Dataweave 日期格式化为具有夏令时的 GMT 时区

Dataweave date formatting to GMT timezone with daylight saving

我正在尝试使用 GMT 时区进行日期格式化。但是夏季和冬季的偏移量是相同的。它适用于 CET 时区。想知道为什么它与 GMT 不同?

尝试了以下数据编织

期待中

"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

Neither UTC nor GMT ever change for Daylight Saving Time (DST). However, some of the countries that use GMT switch to different time zones during their DST period.

For example, the United Kingdom is not on GMT all year, it uses British Summer Time (BST), which is one hour ahead of GMT, during the summer months.

如果您想要获得 UK/London 一年中的时间(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"
  }
}