Reputation: 531
I am trying to convert local time ( client machine in India) to UTC time for this particular date for ( 'US/Eastern' ) timezone
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');
both date1 and date2 returns correct output if i change my local machine time zone to us/newyork timezone but returns wrong if i am in my local timezone of India/Delhi. Where i am missing anything? Thanks in advance.
Upvotes: 1
Views: 1906
Reputation: 3440
Try to create the date2
using 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>
Upvotes: 1
Reputation: 540
Try creating your date with 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')
Upvotes: 3