Если ваше входное значение действительно точно так, как показано здесь, строка , содержащая значение, основанное на эпохе Unix в миллисекундах, тогда вы можете сделать это:
var x = '-2208988800000';
var m = moment.utc(x, 'x')
var s = m.format('DD-MMM-YYYY'); //=> '01-Jan-1900'
Вы можете преобразовать обратно в исходную строку следующим образом:
var x = m.format('x'); //=> '-2208988800000'
Если вместо строки у вас есть число , то это будет:
var x = -2208988800000;
var m = moment.utc(x);
var s = m.format('DD-MMM-YYYY'); //=> '01-Jan-1900'
Вы можете преобразовать обратно в исходное число с помощью функции valueOf
или принудительно ввести число:
var x = m.valueOf(); //=> -2208988800000
var x = +m; // shorthand (same result)
Вашему человеку 118 лет. ; -)
Тем не менее, я не уверен, почему у вас есть дата рождения в миллисекундах для начала. Я склонен согласиться с комментарием Тима МакКейба по вашему вопросу. Дни рождения не должны храниться с такой точностью, или назначаться на любое время или корректироваться по UTC или любому часовому поясу. Вместо -2208988800000
сохраните значение, например 1900-01-01
. Используйте любой тип DATE
, поддерживаемый вашей базой данных, и передайте его в виде строки в формате ISO8601 ("1900-01-01"
). Затем вы можете переформатировать его, если хотите, например:
var x = '1900-01-01';
var m = moment(x);
var s = m.format('DD-MMM-YYYY'); //=> '01-Jan-1900'
и обратно:
var x = m.format('YYYY-MM-DD'); //=> '1900-01-01'