夏令时将Dataweave日期格式格式化为GMT时区

时间:2019-09-24 14:48:07

标签: dataweave

我正在尝试使用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
    }
}

1 个答案:

答案 0 :(得分:4)

夏令时不适用于格林尼治标准时间(或UTC)

请参见https://www.timeanddate.com/time/gmt-utc-time.html

  

夏时制(DST)的UTC和GMT都不会更改。但是,某些使用GMT的国家/地区在夏令时期间会切换到不同的时区。

     

例如,英国并非全年都使用格林尼治标准时间,而是在夏季月份使用英国夏令时(BST),比格林尼治标准时间早一小时。

如果您要获取英国/伦敦的全年时间(格林尼治标准时间(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"
  }
}