Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将UTC字符串日期转换为UTC日期_Javascript_Momentjs_Moment Timezone - Fatal编程技术网

Javascript 将UTC字符串日期转换为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(美国纽约标准时间)因为这当然是由于他们的

我从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(美国纽约标准时间)
因为这当然是由于他们的本地浏览器转换为不同的时区,但我想为所有用户保留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)。也许还可以在原始问题中提到您的日历库,以便可以建议任何可能的替代方案?