Книга: Выразительный JavaScript
Тип даты
Тип даты
В JavaScript есть стандартный тип объекта для дат – а точнее, моментов во времени. Он называется Date
. Если просто создать объект даты через new
, вы получите текущие дату и время.
console.log(new Date());
// ? Sun Nov 09 2014 00:07:57 GMT+0300 (CET)
Также можно создать объект, содержащий заданное время
console.log(new Date(2015, 9, 21));
// ? Wed Oct 21 2015 00:00:00 GMT+0300 (CET)
console.log(new Date(2009, 11, 9, 12, 59, 59, 999));
// ? Wed Dec 09 2009 12:59:59 GMT+0300 (CET)
JavaScript использует соглашение, в котором номера месяцев начинаются с нуля, а номера дней – с единицы. Это глупо и нелепо. Поберегитесь.
Последние четыре аргумента (часы, минуты, секунды и миллисекунды) необязательны, и в случае отсутствия приравниваются к нулю.
Метки времени хранятся как количество миллисекунд, прошедших с начала 1970 года. Для времени до 1970 года используются отрицательные числа (это связано с соглашением по Unix time, которое было создано примерно в то время). Метод getTime
объекта даты возвращает это число. Оно, естественно, большое.
console.log(new Date(2013, 11, 19).getTime());
// ? 1387407600000
console.log(new Date(1387407600000));
// ? Thu Dec 19 2013 00:00:00 GMT+0100 (CET)
Если задать конструктору Date
один аргумент, он будет восприниматься как количество миллисекунд. Текущее значение миллисекунд можно получить, создав объект Date
и вызвав метод getTime
, или же вызвав функцию Date.now
.
У объекта Date
для извлечения его компонентов есть методы getFullYear
, getMonth
, getDate
, getHours
, getMinutes
, и getSeconds
. Есть также метод getYear
, возвращающий довольно бесполезный двузначный код, типа 93
или 14
.
Заключив нужные части шаблона в круглые скобки, мы можем создать объект даты прямо из строки.
function findDate(string) {
var dateTime = /(d{1,2})-(d{1,2})-(d{4})/;
var match = dateTime.exec(string);
return new Date(Number(match[3]),
Number(match[2]) - 1,
Number(match[1]));
}
console.log(findDate("30-1-2003"));
// ? Thu Jan 30 2003 00:00:00 GMT+0100 (CET)
- Создаём регулярное выражение
- Проверяем на совпадения
- Ищем набор символов
- Повторяем части шаблона
- Группировка подвыражений
- Совпадения и группы
- Тип даты
- Границы слова и строки
- Шаблоны с выбором
- Механизм поиска
- Откаты
- Метод replace
- Жадность
- Динамическое создание объектов RegExp
- Метод search
- Свойство lastIndex
- Циклы по вхождениям
- Разбор INI файлы
- Международные символы
- Итог
- Упражнения
- Использование CAST() с типами дата
- B10. Функции даты и времени: ‹time.h›
- Контекстные переменные даты и времени
- Преобразование типов даты в CHAR(n) и VARCHAR(n)
- 6.1. Времена и даты
- Операции, использующие значения даты и времени
- Функции даты и времени
- Неявное преобразование типов в литералах даты и времени
- ГЛАВА 10. Типы даты и времени.
- Типы для хранения даты и времени
- Время и дата