外国时间到当地时间

时间:2017-05-04 07:09:37

标签: javascript node.js momentjs

我正在尝试将外国时间转换为本地时间。我在Europe/London得到了约会时间。目前我正在使用时间 - 时区来使我的代码正常工作,但它给了我一个错误的输出。

resultDate = new moment('2017-06-30T22:10:00').tz('Europe/London').format('YYYY-MM-DD HH:mm:ss');

我认为代码认为日期输入已经在本地时间,我需要将其转换为Europe/London,这将产生本地结果,我想要的是实际将外国时间转换为本地时间。

简而言之,我的输入日期和时间(2017-06-30T22:00:00),我预计它会提前7小时(2017-07-1T05:00:00),因为我目前住在Asia/Manila,7小时提前到伦敦。但是我的结果是2017/06/30 15:00:00 +0100

使用我的代码中显示的'Europe/London''Asia/Manila'信息,我有办法做到这一点吗?

1 个答案:

答案 0 :(得分:2)

您可以使用moment.tz将输入解析为Europe/London时间,然后使用tz功能将其转换为Asia/Manila

第一个使用给定时区解析您的输入,而后者将时刻objet转换为给定时区。

这是一份工作样本:

// Parse input considering as London tz
var timeInLondon = moment.tz('2017-06-30T22:10:00', 'Europe/London');
// Converting input to Manila
var timeInManila = timeInLondon.tz('Asia/Manila');
// Show result
console.log(timeInManila.format('YYYY-MM-DD HH:mm:ss'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.11/moment-timezone-with-data-2010-2020.min.js"></script>