2016-12-08 3 views
0

У меня есть эта переменная 'previousDate' и назначена на предыдущую дату.Json.Stringify испортил мой объект даты

var previousDate; 

Когда я делаю console.log (previousDate), я получаю это значение на консоли.

Wed Dec 07 2016 10:02:37 GMT-0800 (Pacific Standard Time) 

Теперь, когда i json.stringify эти данные, я получаю следующую дату и время.

2016-12-07T18:02:37.223Z 

Дата такая же, но, пожалуйста, обратите внимание на время здесь. Вместо PST он показывает мне GMT. Мне нужно иметь время PST здесь, когда я строю. Любые предложения, пожалуйста?

+0

Что именно ваша цель? Для переноса объектов даты обычно проще и меньше подвержено ошибкам с помощью часовой пояс UTC. – Timo

+0

Я хочу, чтобы тайминги PST отображались после строки. но его показ UTC, я думаю ... –

ответ

1

Значения даты в JavaScript не содержат информацию о часовом поясе.

Когда вы записываете что-то на консоль, браузер делает все возможное, чтобы показать вам полезную и полезную информацию. Для дат это часто означает, что любое значение UTC сохраняется внутри вашего местного часового пояса, для которого вы должны быть «GMT-0800 (стандартное тихоокеанское время)».

Если вы хотите, чтобы отобразить время в UTC, вы можете написать:

console.log(date.toUTCString()) 

Это то, что JSON.stringify делает под капотом; перенос дат с помощью UTC помогает упростить ситуацию, когда эта информация должна пересекать различные временные интервалы.

Однако это поведение не похоже на то, что вы ищете. Если вы хотите, чтобы строка быть локальный_файл часовой пояс, когда вы отправить его, вы можете написать:

console.log(date.toString()) 
1

Похоже, что вы можете получить то, что вы хотите, если вы:

date.toDateString() + ' ' + date.toTimeString()

2

When вы создаете свой объект, создаете метод для возврата строки даты.
Пример:

var obj = { d1: (new Date()), d1String: function() { return this.d1.toString(); } } 

Или сохранить YourDate.toString() в одном свойстве объекта.

var objDate = { dateString: YourDate.toString() ;} 

Или

var ff = function(YourObject) { var OBJ = {} ; 
for(x in YourObject) 
{ 
    if (typeof(YourObject[x]) !== "function") 
     eval("OBJ." + x + " = '" + YourObject[x] + "'"); 
    else 
     eval("OBJ." + x + " = '" + YourObject[x]() + "'"); 
} 
var strOBJ = JSON.stringify(OBJ); 
return strOBJ; 
} 

Мой Gist на GitHub

https://gist.github.com/kiaratto/afb6bb9acd21d0dda37157eb3a92ec2f

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