Javascript 将UTC字符串日期转换为UTC日期
我从api收到以下日期字符串(UTC):Javascript 将UTC字符串日期转换为UTC日期,javascript,momentjs,moment-timezone,Javascript,Momentjs,Moment Timezone,我从api收到以下日期字符串(UTC):“2020-04-01T00:00:00Z”,这很好 然后我将这个字符串转换成一个日期对象,如下所示:let formattedstartDate:Date=new Date(data.body.startDate) 我现在在英国,因此显示为:Wed Apr 01 2020 01:00:00 GMT+0100(英国夏季时间)但是对于我在美国的用户,显示为:2020年3月31日星期二19:00:00 GMT-0500(美国纽约标准时间)因为这当然是由于他们的
“2020-04-01T00:00:00Z”
,这很好
然后我将这个字符串转换成一个日期对象,如下所示:let formattedstartDate:Date=new Date(data.body.startDate)代码>
我现在在英国,因此显示为:Wed Apr 01 2020 01:00:00 GMT+0100(英国夏季时间)
但是对于我在美国的用户,显示为:2020年3月31日星期二19:00:00 GMT-0500(美国纽约标准时间)
因为这当然是由于他们的本地浏览器转换为不同的时区,但我想为所有用户保留GMT/UTC时间,不管他们在哪里
我希望全世界的人都能把它看作是:Wed Apr 01 2020 01:00:00 GMT+0100(英国夏季时间)
因此,我使用以下方法手动转换回GMT/UTC:
let convertToUtcDate = new Date(formattedstartDate.getUTCFullYear(), formattedstartDate.getUTCMonth(), formattedstartDate.getUTCDate(), formattedstartDate.getUTCHours(), formattedstartDate.getUTCMinutes(), formattedstartDate.getUTCSeconds());
然而,美国用户仍然认为这是周二2020年3月31日19:00:00 GMT-0500(美国纽约标准时间)
有什么想法吗?您可以尝试从英国的服务器获取日期,然后将日期转换为字符串let StringDate=dateObjectInUk.toString()
并在屏幕上为您的美国用户打印字符串。谢谢您的回答。我遇到的问题是,我的日历要求它是日期类型,所以我不能不使用字符串,不幸的是:(这不是一个解决方案,而是对原始输出的攻击。如果您的日历需要日期
,我想除了在显示值时以某种方式调整您的日历库以明确使用UK TZ之外,没有其他解决方法;AFAIK日期
只保留UTC时间戳,并在初始化的TZ中传递它在中(最终碰巧是用户自己的浏览器/区域设置TZ)。也许还可以在原始问题中提到您的日历库,以便可以建议任何可能的替代方案?