Отметка времени в удобочитаемом формате - PullRequest
78 голосов
/ 24 марта 2011

Ну, у меня странная проблема при конвертации из метки времени Unix в человеческое представление с использованием javascript

Вот отметка времени

1301090400

Это мой JavaScript

var date = new Date(timestamp * 1000);
var year    = date.getFullYear();
var month   = date.getMonth();
var day     = date.getDay();
var hour    = date.getHours();
var minute  = date.getMinutes();
var seconds = date.getSeconds();  

Я ожидал, что результаты будут 2011 2, 25 22 00 00. Но это 2011, 2, 6, 0, 0, 0 Что я скучаю?

Ответы [ 5 ]

89 голосов
/ 24 марта 2011

getDay() возвращает день недели.Чтобы получить дату, используйте date.getDate().getMonth() возвращает месяц, но месяц начинается с нуля, поэтому использование getMonth()+1 должно дать вам правильный месяц.Значение времени здесь вроде бы нормально, хотя час здесь 23 (GMT + 1).Если вам нужны универсальные значения, добавьте UTC к методам (например, date.getUTCFullYear(), date.getUTCHours())

var timestamp = 1301090400,
date = new Date(timestamp * 1000),
datevalues = [
   date.getFullYear(),
   date.getMonth()+1,
   date.getDate(),
   date.getHours(),
   date.getMinutes(),
   date.getSeconds(),
];
alert(datevalues); //=> [2011, 3, 25, 23, 0, 0]
38 голосов
/ 24 марта 2011
var newDate = new Date();
newDate.setTime(unixtime*1000);
dateString = newDate.toUTCString();

Где unixtime - время, возвращаемое вашим sql db. Вот скрипка , если это поможет.

Например, используя его для текущего времени:

document.write( new Date().toUTCString() );
7 голосов
/ 18 августа 2015

вот ответ kooilnc с добавленными нулями

function getFormattedDate() {
    var date = new Date();

    var month = date.getMonth() + 1;
    var day = date.getDate();
    var hour = date.getHours();
    var min = date.getMinutes();
    var sec = date.getSeconds();

    month = (month < 10 ? "0" : "") + month;
    day = (day < 10 ? "0" : "") + day;
    hour = (hour < 10 ? "0" : "") + hour;
    min = (min < 10 ? "0" : "") + min;
    sec = (sec < 10 ? "0" : "") + sec;

    var str = date.getFullYear() + "-" + month + "-" + day + "_" +  hour + ":" + min + ":" + sec;

    /*alert(str);*/

    return str;
}
7 голосов
/ 24 марта 2011

Часы, минуты и секунды зависят от часового пояса вашей операционной системы. В GMT (UST) это 22:00:00, но в разных часовых поясах это может быть что угодно.Поэтому добавьте смещение часового пояса ко времени, чтобы создать дату по Гринвичу:

var d = new Date();
date = new Date(timestamp*1000 + d.getTimezoneOffset() * 60000)
4 голосов
/ 16 ноября 2017

используйте Date.prototype.toLocaleTimeString() как задокументировано здесь

обратите внимание на пример локали en-US в URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...