2015-05-21 4 views
1

Я пытаюсь преобразовать время GMT в локальное время пользователя.Как сократить время по Гринвичу в Локальное время пользователя Javascript

формат времени я получаю от сервера: 2015-05-20 18:00:00 GMT

Я просто хочу, чтобы показать часы и минуты так: 20:00

Я хотел использовать это решение, которое, кажется, довольно легко , но я не знаю, как сделать мой формат такой же, как этого

var date = new Date('5/21/2015 18:52:48'); 
date.toString(); 
+0

Где/как вы получаете дату в первую очередь? –

+0

Возможный дубликат [Преобразование даты времени UTC в локальное время с использованием JavaScript] (http://stackoverflow.com/questions/6525538/convert-utc-date-time-to-local-date-time-using-javascript) –

ответ

1

формат времени я получаю от сервера: 2015-05-20 18:00:00 GMT

Если да, то вы можете легко массировать, что в таком формате, который ES5 и более высокие браузеры are supposed to support, которые были бы 2015-05-20T18:00:00Z для примера:

var yourString = "2015-05-20 18:00:00"; 
var dt = new Date(yourString.replace(' ', 'T') + "Z"); 
var hours = dt.getHours(); // Will be local time 
var minutes = dt.getMinutes(); // Will be local time 

Тогда просто форматировать значения по hours и minutes вы получаете в нужная строка hh:mm.


Примечание: Z в конце строки важно. К сожалению, спецификация ES5 имеет значительную ошибку в ней (они фиксируют ее в ES6) вокруг того, что должен делать движок, если не существует часового пояса для обрабатываемой строки. Некоторые двигатели делают то, о чем говорит спецификация, другие делают то, что говорят (а спецификация ES6 будет), что, к сожалению, означает, что прямо сейчас вы не можете доверять тем, что делают браузеры, если нет часового пояса на Струна.

-1

Я просто должен был добавить «UTC»

var date = new Date('2015-05-20 15:00:00 UTC'); 
alert(date.getHours()); 
    alert(date.getMinutes()); 
+0

Этот формат даты и времени может работать или не работать в любом браузере, так как он не указан в спецификации, и если он * кажется * работать, он может или не может использовать UTC в отличие от местного времени при разборе. Я бы не стал на это полагаться. –

-1

новые Дата() в браузере возвращает объект даты в часовой пояс (машина часовой пояс) пользователя. Просто вам нужно передать функцию GMT date to Date в формате ISO. Поэтому он будет рассматривать его как время gmt.

var date = new Date('2015-05-21T18:52:48Z'); 
date.toString();//You will get here date string in local format 

Вы также можете использовать UTC в формате UTC и GMT являются same.

Вот, например.

var date = new Date('2015-05-21 18:52:48UTC'); //You can use GMT instead UTC 
date.toString();//You will get here date string in local format 

Первый способ является предпочтительным в качестве второй метод не работает в Internet Explorer

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

  • Нет связанных вопросов^_^