Ответ 1
Отметка времени - это момент времени. Как правило, это может быть представлено через несколько миллисекунд после epoc (Unix Epoc от 1 января 1970 года в 12:00 UTC). Формат этого момента времени зависит от часового пояса. Хотя это один и тот же момент времени, "значение часов" не одинаково среди часовых поясов, и необходимо учитывать смещение от UTC.
Вот некоторый код для иллюстрации. Точка - это время, полученное тремя разными способами.
var moment = require( 'moment' );
var localDate = new Date();
var localMoment = moment();
var utcMoment = moment.utc();
var utcDate = new Date( utcMoment.format() );
//These are all the same
console.log( 'localData unix = ' + localDate.valueOf() );
console.log( 'localMoment unix = ' + localMoment.valueOf() );
console.log( 'utcMoment unix = ' + utcMoment.valueOf() );
//These formats are different
console.log( 'localDate = ' + localDate );
console.log( 'localMoment string = ' + localMoment.format() );
console.log( 'utcMoment string = ' + utcMoment.format() );
console.log( 'utcDate = ' + utcDate );
//One to show conversion
console.log( 'localDate as UTC format = ' + moment.utc( localDate ).format() );
console.log( 'localDate as UTC unix = ' + moment.utc( localDate ).valueOf() );
Что выводит это:
localData unix = 1415806206570
localMoment unix = 1415806206570
utcMoment unix = 1415806206570
localDate = Wed Nov 12 2014 10:30:06 GMT-0500 (EST)
localMoment string = 2014-11-12T10:30:06-05:00
utcMoment string = 2014-11-12T15:30:06+00:00
utcDate = Wed Nov 12 2014 10:30:06 GMT-0500 (EST)
localDate as UTC format = 2014-11-12T15:30:06+00:00
localDate as UTC unix = 1415806206570
В миллисекундах все одинаковы. Это точно такой же момент времени (хотя в некоторых случаях более поздняя миллисекунда на один выше).
Что касается формата, каждый может быть представлен в определенном часовом поясе. И форматирование строки этого часового пояса выглядит по-разному, в один и тот же момент времени!
Собираетесь ли вы сравнить эти значения времени? Просто конвертируйте в миллисекунды. Одно значение в миллисекундах всегда меньше, равно или больше, чем другое значение в миллисекундах.
Вы хотите сравнить конкретные значения "час" или "день" и беспокоиться, что они "пришли" из разных часовых поясов? Сначала преобразуйте в UTC с помощью moment.utc( existingDate )
, а затем выполните операции. Примерами этих преобразований при выходе из БД являются последние вызовы console.log
в этом примере.