2016-11-21 160 views
0

我想为本地时间(在印度的客户机)转换为UTC时间,这个特殊的日期(“美国/东部”)时区Moment.js当地时间为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都会返回正确的输出,但如果我处于印度/德里当地时区,则返回错误。我在哪里失去了什么?提前致谢。

回答

1

尝试使用moment.tz(date,timezone)创建日期;

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

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

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>