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
   253   254   255   256   257   258   259   260   261   262   263