Page 258 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 258
а
а
Ари ф метические опер ц и и с дат м и
в
Поскольку даты - это только числа, ы можете вычитать х для получения коли
и
чества миллисекунд между ними.
const msDiff = d2 - dl ; / / 41 7740400000 миллисекунд
const daysDiff = msDiff/ 1 0 0 0 / 6 0 / 6 0 / 2 4 ; / / 4834 . 9 6 дней
Это свойство облегчает также сортировку дат с использованием A r r a y .
prototype . sort.
const dates = [ ) ;
/ / создать несколько случайных да т
const min = new Date ( 2 0 1 7 , О , 1 ) . v alueOf ( ) ;
const delta = new Date ( 2 0 2 0 , О , 1 ) . v alueOf ( ) - min;
for ( l et i=O; i<l O ; i++ )
m
dat s . p ush ( n ew Date (min + delta*Math . rando ( ) ) ) ;
e
/ / даты случайны и (вероятно) перемешаны
/ / мы можем отсортировать их (по убыванию) :
dates . sort ( ( а , Ь ) => Ь - а ) ;
1 1 или возрастанию:
dates . sort ( ( а , Ь ) => а - Ь ) ;
Библиотека Moment . j s предоставляет множество мощных методов для общих опе
раций с датами, позволяя добавлять или вычитать произвольные единицы времени.
const m = moment ( ) ; 11 сейчас
s
m . a d ( З , ' d ay ' ) ; 1 1 теперь т на три дня в будущем
d
(
m . suЬtract 2 , ' y ear ' ) ; 1 1 теперь т на два года минус три дня в прошлом
s
m = moment ( ) ; 11 сброс
m . startOf ( ' y ear ' ) ; 1 1 теперь т 1 января этого года
h
m . endOf ( ' m ont ' ) ; 11 теперь т 31 января этого года
Библиотека Moment . j s позволяет также сцеплять методы.
(
const m = moment )
. a d ( l O , ' h ours ' )
d
. s uЬtract ( З , ' d ays ' )
. e ndOf ( m onth ' ) ;
'
/ / т - конец месяца , в котором вы оказались бы, если бы путешествовали
1 1 1 0 часов в будуще , а затем 3 дня назад
е
Удобные относитель н ы е даты
Довольно часто возникает необходимость представить информацию даты в от
носительном виде: не как конкретную дату, а "три дня назад': Библиотека Moment . j s
позволяет сделать это.
Арифметические операц и и с датами 261

