2015-01-06 4 views
0

формат даты, которые я получаю от JSON как это: -Json преобразования формата даты вычитая 1 день

/Date(1412101800000)/ 

Когда я преобразовать это в DateFormat, я получаю 1 день минус.

Я использую следующий код: -

var dateFormat = new Date(parseInt(obj['DATEOFJOINING'].substr(6))).toISOString().substr(0, 10); 

dateFormat results in 2014-09-30 

Оригинальные дата, которая исходит от Db является 2014-10-01

Почему это происходит? Как получить идеальную дату?

+1

Может быть, из-за разницы во времени на сервере и на клиентском ПК. – madforstrength

ответ

0

Это связано с часовым поясом клиентов.
Используйте Date.prototype.getTimezoneOffset, чтобы получить смещение:

var date = new Date(1412101800000); 
var gmtDate = new Date(date.valueOf() + date.getTimezoneOffset() * 60 * 1000); 
+0

No Luck ... Показывает дату минус 1 день ..! – Anup

2

Это метка времени.

new Date(parseInt('/Date(1412101800000)/'.substr(6))); 

Только что установили справа часовой пояс.

var dateFormat = new Date(parseInt('/Date(1412101800000)/'.substr(6))); 
dateFormat.setTime(dateFormat.getTime() + dateFormat.getTimezoneOffset()*60*1000 ); 

Дата в вашем часовом поясе *: 30/09/2014 19:30:00
Дата в Лос-Анджелесе *: 30/09/2014 11:30:00
Дата в Берлине *: 30/09/2014 19:30:00
Дата в Пекине *: 01/10/2014 1:30:00
Дата в Нью-Йорке *: 30/09/2014 13:30:00

Для пример

var dateFormat = new Date(parseInt('/Date(1412101800000)/'.substr(6))); 
    dateFormat.setTime(dateFormat.getTime() + dateFormat.getTimezoneOffset()*(-10*100000)); 

Дата {Ср 01 окт 2014 12:10:00 GMT + 0100 (BST)}

+0

Я пробовал ур код ... Показывает мне дату минус 1 день.! – Anup

+0

Я использую угловую ng-сетку ... когда я редактирую поле даты ... он показывает 'Tue 30 сентября 2014 18:30:00 GMT + 0530 (стандартное время Индии)' – Anup

+0

@ Если вам нужно поставить свой часовой пояс . Просто замените значения 60 * 100 – Oyeme

0

Как прокомментировал комментарий @madforstrength, он использует смещение от GMT. Чтобы получить смещение в минуты вы можете попробовать:

var d = new Date() 
var n = d.getTimezoneOffset(); 

и настроить для вашего местного времени.

Вы можете увидеть ссылку here.

Смежные вопросы