Moment.js其他时区的UTC当地时间

时间:2016-11-21 11:00:13

标签: javascript momentjs utc

我正在尝试将当地时间(印度的客户端机器)转换为('美国/东部')时区的特定日期的UTC时间

tz - 'US/Eastern'
InputDate - 03/12/2017 23:59:59 
Expected output - 03/13/2017 03:59:59
Actual output i am getting - 03/12/2017 18:29

var date1 = moment(inputDate, 'MM/DD/YYYY HH:mm:ss').utc().format('MM/DD/YYYY HH:mm');
var date2 = moment(inputDate, 'MM/DD/YYYY HH:mm:ss').tz(tz).utc().format('MM/DD/YYYY HH:mm'); 

如果我将本地计算机时区更改为us / newyork时区,则date1和date2都返回正确的输出,但如果我在印度/德里的当地时区,则返回错误。哪里我错过了什么?提前谢谢。

2 个答案:

答案 0 :(得分:2)

尝试使用moment.tz(日期,时区)创建日期;

var tz = 'US/Eastern';
var date2 = moment.tz(inputDate, 'MM/DD/YYYY HH:mm:ss', tz).utc().format('MM/DD/YYYY HH:mm')

答案 1 :(得分:1)

尝试使用date2创建moment.tz(date, format, timeZone)

var date2 = moment.tz(inputDate, 'MM/DD/YYYY HH:mm:ss', tz)
                    .utc().format('MM/DD/YYYY HH:mm'); 

var tz = 'US/Eastern';
var inputDate = '03/12/2017 23:59:59';
var expectedOutput = '03/13/2017 03:59:59';
// Actual output i am getting - 03/12/2017 18:29

var date1 = moment(inputDate, 'MM/DD/YYYY HH:mm:ss').utc().format('MM/DD/YYYY HH:mm');

var date2 = moment.tz(inputDate, 'MM/DD/YYYY HH:mm:ss', tz).utc().format('MM/DD/YYYY HH:mm'); 

console.log('date1', date1);
console.log('date2', date2);
console.log('expectedOutput', expectedOutput);
<script src="http://momentjs.com/downloads/moment.js"></script>
<script src="http://momentjs.com/downloads/moment-timezone-with-data.js"></script>