2016-11-21 94 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>