JavaScript - Дата (Date)

На этом уроке мы познакомимся с объектом Date языка JavaScript и научимся его использовать на практике.

Объект Date представляет собой точку на оси времени и предназначен для хранения даты и времени с точностью до миллисекунды.

Объект Date можно создавать различными способами:

  • Без параметров (хранит дату и время, которая была в момент создания объекта на локальном компьютере);
    var newDate = new Date();
    alert(newDate);
    
  • С одним числовым параметром, в этом случае дата и время задаётся как количество миллисекунд, прошедших с 1 января 1970 00:00:00 UTC;
    // 1 год ≈ 365*24*60*60*1000 ≈ 31536000000 мс
    var date1 = new Date(31536000000);
    alert(date1);
    
  • С одним строковым параметром, в этом случае JavaScript пытается разобрать строку с помощью метода Date.parse, т.е. преобразовать в дату.
    // YYYY-MM-DDThh:mm:ss.sss
    //Для разделения даты и времени используется символ T
    var str = "2015-02-24T21:23";
    var date2 = new Date(str);
    alert(date2);
    //Также можно указать часовой пояс +hh:mm или -hh:mm
    var str1 = "2015-02-24T22:02+03:00";
    var date2 = new Date(str1);
    alert(date2);
    
  • Используя множество параметров перечисленных через запятую: год (4 цифры), месяц (отсчёт ведётся с 0), день (1..31), часы (0..23), минуты (0..59), секунды (0..59), миллисекунды (0..999). Причём обязательными являются только первых 2 параметра.
    //1 пример: только обязательные параметры
    //неуказанные параметры равны: число - 01, часы - 00, минуты - 00, секунды - 00, миллисекунды - 000.
    var date3 = new Date(2015,01);
    alert(date3);
    //2 пример
    //неуказанные параметры равны: секунды - 00, миллисекунды - 000.
    var date4 = new Date(2015,01,24,21,23);
    alert(date4);
    
  • Примечание: Если Вам необходимо установить дату и время в UTC, то можете воспользоваться методом Date.UTC:

    //1 пример
    var date1 = Date.UTC(2015,1,1);
    var date2 = new Date(date1);
    alert(date2.toUTCString());
    //2 пример
    var newDate = new Date(Date.UTC(2015,1,1));
    alert(newDate.toUTCString());
    

    Методы объекта Date можно разделить на следующие категории:

    • для получения отдельных компонентов даты и времени (начинаются методы с глагола get);
    • для установления даты и времени (начинаются методы с глагола set);
    • для преобразования даты в строку (начинаются методы с to);
    • для преобразования строки в дату: метод Date.parse.
    • Методы объекта Date для получения отдельных компонентов даты и времени в местном часовом поясе:
      • getFullYear() - метод, который возвращает год, состоящий из 4 чисел;
      • getMonth() - метод, который возвращает месяц в числовом формате: 0..11 (0 - январь, 1-февраль, 2 март, ...,11 - декабрь).
      • getDate() - метод, который возвращает число месяца: 1..31;
      • getHours() - метод, который возвращает количество часов: 0..23;
      • getMinutes() - метод, который возвращает количество минут: 0..59;
      • getSeconds() - метод, который возвращает количество секунд: 0..59;
      • getMilliseconds() - метод, который возвращает количество миллисекунд: 0..999;
      var newDate = new Date (2015,01,25,17,54,34,178);
      document.write("---Дата---" + "<br>");
      document.write("Год: " + newDate.getFullYear() + "<br>");
      document.write("Месяц: " + newDate.getMonth() + "<br>");
      document.write("Число: " + newDate.getDate() + "<br>");
      document.write("---Время---" + "<br>");
      document.write("Часы: " + newDate.getHours() + "<br>");
      document.write("Минуты: " + newDate.getMinutes() + "<br>");
      document.write("Секунды: " + newDate.getSeconds() + "<br>");
      document.write("Миллисекунды: " + newDate.getMilliseconds() + "<br>");
      
    • Методы объекта Date для получения отдельных компонентов даты и времени в UTC: getUTCFullYear(), getUTCMonth(), getUTCDate(), getUTCHours(), getUTCMinutes(), getUTCSeconds(), getMilliseconds(). Данные методы аналогичны предыдущим методам, за исключением того что они возвращают дату и время в UTC.
    • Метод getTime(). Он предназначен для возвращения количества миллисекунд, прошедших с 01.01.1970 00:00:00 UTC.
    • Метод getTimezoneOffset(). Он предназначен для возвращения разницы в минутах между часовым поясом локального компьютера и UTC.
    • Методы объекта Date для установления отдельных компонентов даты и времени в местном часовом поясе:
      • setFullYear() - метод, который устанавливает год. Кроме этого, данный метод имеет ещё 2 необязательных параметра, с помощью которых Вы можете дополнительно установить месяц и число.
        var newDate = new Date();
        //установить для newDate с помощью метода setFullYear: год - 2014.
        newDate.setFullYear(2014);
        //установить для newDate с помощью метода setFullYear: год - 2014, месяц - 08 (сентябрь, т.к. отсчёт ведётся с 0).
        newDate.setFullYear(2014,08);
        //установить для newDate с помощью метода setFullYear: год - 2014, месяц - 08 (сентябрь), число - 20.
        newDate.setFullYear(2014,08,20);
        
      • setMonth() - метод, который устанавливает месяц в числовом формате: 0..11 (0 - январь, 1-февраль, 2 март, ...,11 - декабрь). Кроме этого, данный метод имеет ещё 1 необязательный параметр, с помощью которого Вы можете дополнительно установить число.
        var newDate = new Date();
        //установить для newDate с помощью метода setMonth: месяц - 05 (июнь).
        newDate.setMonth(05);
        //установить для newDate с помощью метода setMonth: месяц - 05 (июнь), число - 15.
        newDate.setMonth(05,15);
        
      • setDate() - метод, который устанавливает число.
        var newDate = new Date();
        //установить для newDate с помощью метода setDate: число - 28.
        newDate.setDate(28);
        
      • setHours() - метод, который устанавливает количество часов: 0..23. Кроме этого, данный метод имеет ещё 3 необязательных параметра, с помощью которых Вы можете дополнительно установить минуты, секунды и миллисекунды.
        var newDate = new Date();
        //установить для newDate с помощью метода setHours: часы - 13.
        newDate.setHours(13);
        //установить для newDate с помощью метода setHours: часы - 13, минуты - 20.
        newDate.setHours(13,20);
        //установить для newDate с помощью метода setHours: часы - 13, минуты - 20, секунды - 37.
        newDate.setHours(13,20,37);
        //установить для newDate с помощью метода setHours: часы - 13, минуты - 20, секунды - 37, миллисекунды - 230.
        newDate.setHours(13,20,37,230);
        
      • setMinutes() - метод, который устанавливает количество минут: 0..59. Кроме этого, данный метод имеет ещё 2 необязательных параметра, с помощью которых Вы можете дополнительно установить секунды и миллисекунды.
        var newDate = new Date();
        //установить для newDate с помощью метода setMinutes: минуты - 37.
        newDate.setMinutes(37);
        //установить для newDate с помощью метода setMinutes: минуты - 37, секунды - 12.
        newDate.setMinutes(37,12);
        //установить для newDate с помощью метода setMinutes: минуты - 37, секунды - 12, миллисекунды - 710.
        newDate.setMinutes(37,12,710);
        
      • setSeconds() - метод, который возвращает количество секунд: 0..59. Кроме этого, данный метод имеет один необязательный параметр, с помощью которого Вы можете дополнительно установить миллисекунды.
        var newDate = new Date();
        //установить для newDate с помощью метода setSeconds: секунды - 40.
        newDate.setSeconds(40);
        //установить для newDate с помощью метода setSeconds: секунды - 40, миллисекунды - 105.
        newDate.setSeconds(40,105);
        
      • setMilliseconds() - метод, который устанавливает количество миллисекунд: 0..999.
        var newDate = new Date();
        //установить для newDate с помощью метода setMilliseconds: миллисекунды - 318.
        newDate.setSeconds(318);
        
    • Методы объекта Date для установления отдельных компонентов даты и времени в UTC: setUTCFullYear(), setUTCMonth(), setUTCDate(), setUTCHours(), setUTCMinutes(), setUTCSecondes(), setUTCMilliseconds(). Данные методы аналогичны предыдущим методам, за исключением того что они устанавливают дату и время в UTC.
    • Метод setTime(). Он предназначен для установления даты и времени посредством сложения или вычитания количества миллисекунд от даты 01.01.1970 00:00:00 UTC.

    Примечание: В JavaScript некорректно установленная дата приводит не к ошибкам, а лишь к тому, что она автоматически распределяется по остальным компонентам объекта Date.
    Например, при установлении даты newDate.setFullYear = new Date(2015,01,40) (т.е. 40.01.2015) ошибки не произойдёт. Число 40 распределится следующим образом: 9 февраля 2015 года (т.к. в январе 31 день, то число будет равно 9 (40-31), а месяц +1).

    //Пример 1: прибавим к дате 7 дней
    var date1 = new Date(2015,02,26,22,03);
    date1.setDate(date1.getDate()+7);
    //Пример 2: отнимем от даты 120 секунд 
    var date2 = new Date(2015,02,26,22,03);
    date2.setSeconds(date1.getSeconds()-120);
    //Пример 3: последнее число предыдущего месяца
    var date3 = new Date(2015,02,26,22,03);
    date3.setDate(0);
    

    В JavaScript существует огромное количество методов, предназначенных для перевода даты в строку.

    Первую группу составляют методы, результат которых зависит от используемого браузера. Т.е. формат возвращаемой строки зависит от производителя браузера.

    // toString() - возвращает строку, содержащую дату и время
    // toDateString() - возвращает строку, содержащую дату
    // toTimeString() - возвращает строку, содержащую время
    // сохраним в переменную date дату 13.07.2016 22:31:00
    var date = new Date(2016,06,13,22,31);
    // преобразуем дату в строку
    console.log(date.toString()); //"Wed Jul 13 2016 22:31:00 GMT+1000 (RTZ 9 (зима))"
    // трансформируем дату в строку, содержащую только дату
    console.log(date.toDateString()); //"Wed Jul 13 2016"
    // переведём дату в строку, содержащую только время
    console.log(toTimeString()); //"22:31:00 GMT+1000 (RTZ 9 (зима))"
    
    • Методы, которые преобразуют дату в строку с учётом часового пояса и языка локального компьютера.
      • toLocaleString() - возвращает строку, содержащую дату и время;
      • toLocaleDateString() - возвращает строку, содержащую дату;
      • toLocaleTimeString()- возвращает строку, содержащую время.
    • toUTCString() - метод, который возвращает строку, содержащую дату и время в UTC.
    • toISOString() - метод, который возвращает строку, содержащую дату и время в формате ISO (YYYY-MM-DDTHH:mm:ss.sssZ).
    var date5 = new Date();
    document.write("toString() - " + date5.toString() + "<br>");
    document.write("toDateString() - " + date5.toDateString() + "<br>");
    document.write("toTimeString() - " + date5.toTimeString() + "<br>");
    document.write("toLocaleString() - " + date5.toLocaleString() + "<br>");
    document.write("toLocaleDateString() - " + date5.toLocaleDateString() + "<br>");
    document.write("toLocaleTimeString() - " + date5.toLocaleTimeString() + "<br>");
    document.write("toUTCString() - " + date5.toUTCString() + "<br>");
    document.write("toISOString() - " + date5.toISOString() + "<br>");
    

    Результат преобразований с помощью разных методов даты в строку

    JavaScript для преобразования строки в дату использует метод Date.parse(). Этот метод может преобразовать строку, если она выполнена в соответствии со стандартом RFC2822 или ISO 8601.

    В этом уроке рассмотрим стандарт ISO 8601, в котором строка должна иметь следующий формат: YYYY-MM-DDThh:mm:ss.sssZ.

    Где:

    • YYYY – год, состоящий из 4 цифр;
    • MM – месяц, состоящий из 2 цифр (01 = Январь, 02 = Февраль, и т.д.);
    • DD – день месяца, состоящий из 2 цифр (01..31);
    • T – символ для разделения даты и времени;
    • hh – количество часов (00..23);
    • mm - количество минут (00..59);
    • ss - количество секунд (00..59);
    • sss - количество миллисекунд (0..999);
    • Z - символ, который означает, что время задаётся в формате UTC. Если Вам необходимо вместо UTC установить часовой пояс, то букву "Z" следует заменить значением +hh:mm или -hh.mm.

    Если строка, содержащая дату и время, задана не в формате RFC2822 или ISO 8601, то метод JavaScript Date.parse() всё равно может выполнить её преобразование, но результат в этом случае могут оказаться непредсказуемым.

    //дата в формате ISO	
    var date1 = new Date("2015-04-02");
    alert(date1);
    //дата и время в формате ISO	
    var date2 = new Date("2015-02-02T11:40");
    alert(date2);
    //дата и время в часовом поясе +03:00 в формате ISO	
    var date3 = new Date("2015-02-02T11:40+03:00");
    alert(date3);
    


   JavaScript и jQuery 0    5012 0

Комментарии (0)

    Вы должны авторизоваться, чтобы оставлять комментарии.