Конвертировать время в формате UTC в местное время - PullRequest
275 голосов
/ 29 июня 2011

С сервера я получаю переменную datetime в этом формате: 6/29/2011 4:52:48 PM, и это время по UTC. Я хочу преобразовать его в время браузера текущего пользователя с помощью JavaScript.

Как это можно сделать с помощью JavaScript или jQuery?

Ответы [ 24 ]

0 голосов
/ 14 сентября 2018

Вы можете использовать momentjs , moment(date).format() всегда даст результат в локальная дата .

Бонус , вы можете отформатировать любым способом. Например,

moment().format('MMMM Do YYYY, h:mm:ss a'); // September 14th 2018, 12:51:03 pm
moment().format('dddd');                    // Friday
moment().format("MMM Do YY"); 

Для более подробной информации вы можете обратиться Момент JS веб-сайт

0 голосов
/ 29 мая 2017
function getUTC(str) {
    var arr = str.split(/[- :]/);
    var utc = new Date(arr[0], arr[1]-1, arr[2], arr[3], arr[4], arr[5]);
    utc.setTime(utc.getTime() - utc.getTimezoneOffset()*60*1000)
    return utc;
}

Для тех, кто посещает - используйте эту функцию, чтобы получить объект локальной даты из строки UTC, должен заботиться о летнем времени и работать на IE, IPhone и т. Д.

Мы разбиваем строку (поскольку синтаксический анализ даты JS не поддерживается в некоторых браузерах) Мы получаем разницу от UTC и вычитаем ее из времени UTC, которое дает нам местное время. Так как возвращаемое смещение вычисляется с помощью DST (поправьте меня, если я ошибаюсь), поэтому оно вернет это время в переменную "utc". Наконец верните объект даты.

0 голосов
/ 10 февраля 2015

В Angular я использовал ответ Бена следующим образом:

$scope.convert = function (thedate) {
    var tempstr = thedate.toString();
    var newstr = tempstr.toString().replace(/GMT.*/g, "");
    newstr = newstr + " UTC";
    return new Date(newstr);
};

Редактировать: Angular 1.3.0 добавил поддержку UTC для фильтра даты, я еще не использовал его, но это должно быть проще, вотформат:

{{ date_expression | date : format : timezone}}

Угловой 1.4.3 Дата API

0 голосов
/ 24 марта 2017

Я написал хороший маленький скрипт, который берет эпоху UTC и преобразует его в часовой пояс системы клиента и возвращает его в формате д / м / ГЧ: i: s (как функция даты в PHP):

getTimezoneDate = function ( e ) {

    function p(s) { return (s < 10) ? '0' + s : s; }        

    var t = new Date(0);
    t.setUTCSeconds(e);

    var d = p(t.getDate()), 
        m = p(t.getMonth()+1), 
        Y = p(t.getFullYear()),
        H = p(t.getHours()), 
        i = p(t.getMinutes()), 
        s = p(t.getSeconds());

    d =  [d, m, Y].join('/') + ' ' + [H, i, s].join(':');

    return d;

};
...