0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как быстро вставить текущую дату с определенным форматом даты в Excel?

Работа с датой и временем в JavaScript

Александр Мальцев

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

Примеры формирования даты в JavaScript.

1. Создается текущая дата и время.

Создайте объект Date в JavaScript без каких-либо параметров, и он выдаст текущие дату и время:

Вы можете использовать метод toLocaleDateString для получения только сегодняшней даты:

Текущее время пользователя можно получить следующим образом:

Для получения даты и времени можно использовать следующий формат строки:

2 Произведите дату, указав в объекте Date число миллисекунд, прошедших с 1 января 1970 года 00:00:00 UTC.

3. Создает дату, указывая объект Date в виде строки.

В этом варианте создания даты JavaScript попытается понять переданную ему строку и определить на ее основе дату. В JavaScript можно преобразовать строку в дату с помощью метода Date.parse.

4. Создайте дату, указав следующие параметры, разделенные запятыми: год (4 цифры), месяц (отсчет от 0), день (1..31), час (0..23), минута (0..59), секунда (0..59), миллисекунда (0..999). Из них только первые два параметра являются обязательными.

В следующем примере показано, как можно создать дату с обязательными параметрами:

Примечание: Если вам необходимо установить дату и время в UTC, можно использовать метод Date.UTC.

Получение отдельных компонентов даты и времени

В JavaScript для получения отдельных данных и компонентов времени используются следующие методы:

  • GetFullYear() — возвращает год, состоящий из 4 чисел
  • GetMonth() — возвращает месяц в числовом формате от 0 до 11 (0 — январь, 1 — февраль, 2 — март, . 11 — декабрь);
  • GetDate() — возвращает номер месяца от 1 до 31;
  • GetHours() — возвращает номер часа от 0 до 23;
  • GetMinutes() — возвращает номер минуты от 0 до 59;
  • GetSeconds() — возвращает номер секунды от 0 до 59;
  • GetMilliseconds() — возвращает номер миллисекунды от 0 до 999.

Все эти методы возвращают различные компоненты даты и времени, основанные на часовом поясе, заданном на локальном устройстве пользователя.

Читайте так же:
Как быстро проверить, открыт или закрыт файл (книга) в Excel?

В этом примере мы показываем пользователю, каким временным интервалом он располагает в данный момент:

Как видите, в данном примере используется троичный оператор для получения времени в нужном формате.

В JavaScript есть аналоги этих методов для получения отдельных компонентов даты и времени для часового пояса UTC+0. Они имеют похожие названия, но с компонентом UTC после «get»: getUTCFullYear() , getUTCMonth() , getUTCDate() , getUTCHours() , getUTCMinutes() , getUTCSeconds() , getMilliseconds() .

Вы можете получить день недели в JavaScript с помощью метода getDay().

Этот метод возвращает число от 0 до 6 (0 — воскресенье, 1 — понедельник и 6 — суббота).

В приведенном ниже примере мы преобразуем день недели из числового представления в строковое представление:

В JavaScript вы можете получить количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 UTC, используя метод getTime().

Разницу (в минутах) между местным часовым поясом и UTC можно узнать в JavaScript с помощью метода getTimezoneOffset().

Установка отдельных компонентов даты и времени

В JavaScript различные компоненты даты и времени могут быть заданы с помощью следующих методов объекта Date:

  • setFullYear(year [, month, date]) – установка года (дополнительно можно задать ещё месяц и число);
  • setMonth(month [, date]) – установка месяца от 0 до 11 (0 – январь, 1 – февраль, 2 – март, . 11 – декабрь); дополнительно этот метод позволяет ещё установить число;
  • setDate(date) – установка числа;
  • setHours(hour [, min, sec, ms]) – устанавливает час от 0 до 23 (дополнительно можно ещё установить минуты, секунды и миллисекунды);
  • setMinutes(min [, [sec, ms]) – устаналивает минуты от 0 до 59 (дополнительно можно установить ещё секунды и миллисекунды);
  • setSeconds(sec, [ms]) – устанавливает секунды от 0 до 59 (дополнительно можно установить ещё миллисекунды);
  • setMilliseconds(ms) – устанавливает миллисекунды (от 0 до 999).

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

В JavaScript установка даты и времени в часовом поясе UTC+0 осуществляется с помощью следующих методов: setUTCFullYear() , setUTCMonth() , setUTCDate() , setUTCHours() , setUTCMinutes() , setUTCSecondes() , setUTCMilliseconds() .

Читайте так же:
Как быстро найти и заменить в нескольких открытых файлах Excel?

Установка даты и времени с помощью миллисекунд с 01.01.1970 00:00:00 UTC выполняется сначала, затем setTime().

Аналогично, в JavaScript указание неправильных компонентов даты и времени не вызовет ошибок, они просто будут автоматически назначены друг другу.

Этот прием можно использовать, когда нужно получить дату, отличающуюся от заданной на определенный промежуток времени.

Преобразование даты в строку и её форматирование

Методы, преобразующие даты в строки в JavaScript, можно разделить на две группы.

Первая группа включает методы, которые выполняют эту операцию, как определено в браузере: toString() , toDateString() , toTimeString() , toUTCString() .

Метод toString() возвращает полное представление даты, toDateString() — только дату, toTimeString() — только время, toUTCString() — полное представление даты, но в часовом поясе UTC+0.

Поскольку строковые представления, которые должны возвращать эти методы, не определены в стандарте в явном виде, они могут отличаться в разных браузерах.

Вторая группа включает методы, учитывающие часовой пояс и локальный язык компьютера: toLocaleString() — дата и время, toLocaleDateString() — только дата, toLocaleTimeString() — только время.

Методы toLocaleString() , toLocaleDateString() , toLocaleTimeString() имеют 2 необязательных параметра. Первый параметр используется для явного указания локали, второй — для указания параметров форматирования.

Если ничего не указано или указан неопределенный язык, браузер будет использовать языки по умолчанию, которые у него есть.

Дата и время

Познакомьтесь с новым встроенным объектом: Date. Он содержит дату и время, а также методы для управления ими.

Например, можно сохранить дату и время создания/изменения или отображать текущую дату.

Создание

Вы можете создать объект типа Date с помощью конструктора new Date() с одним из следующих аргументов:

Объект Date, созданный с текущим временем и датой, без аргументов:

Создайте объект Date с временем, равным количеству миллисекунд (тысячных долей секунды) с 1 января 1970 года UTC+0.

Целое число, представляющее количество миллисекунд, прошедших с начала 1970 года, называется меткой времени.

Это простое числовое представление даты. Вы всегда можете получить дату из временной метки с помощью new Date(timestamp) и преобразовать существующий объект Date в временную метку с помощью метода date.getTime() (см. ниже).

Читайте так же:
4 простых способа быстро удалить несколько пустых или пустых строк в Excel

Для дат до 1 января 1970 года будут использоваться отрицательные временные метки, например.

Если аргумент только один, и это строка, то дата «считывается» из нее. Алгоритм разбора такой же, как и в Date.parse, который мы обсудим позже.

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

  • Год должен состоять из четырех цифр: 2013 — верно, 98 — неверно.
  • Месяц начинается с 0 (январь) до 11 (декабрь).
  • Параметр date здесь представляет собой день месяца. Если параметр отсутствует, значение равно 1.
  • Если параметр часы/минуты/секунды/мс отсутствует, значение равно 0.

Максимальная точность составляет 1 мс (до 1/1000 доли секунды):

Получение компонентов даты

Существуют методы для получения года, месяца и т.д. объекта Date:

GetFullYear() Получает год (4 цифры) getMonth() Получает месяц, от 0 до 11. getDate() Получает день месяца, от 1 до 31, что несколько противоречит названию метода. getHours(), getMinutes(), getSeconds(), getMilliseconds() Получает часы, минуты, секунды или миллисекунды соответственно.

В интерпретаторах JavaScript часто можно получить год в виде двух чисел, используя нестандартный и устаревший метод getYear(). Пожалуйста, не используйте его. Получите значение года с помощью getFullYear().

Можно также выбрать конкретный день недели:

GetDay() Возвращает день недели от 0 (воскресенье) до 6 (суббота). Хотя во многих странах первым днем недели считается понедельник, в JavaScript неделя начинается в воскресенье.

Все вышеперечисленные методы возвращают значения в соответствии с локальным часовым поясом.

Однако существуют и их UTC-варианты, возвращающие день, месяц, год для временной зоны UTC+0: getUTCFullYear(), getUTCMonth(), getUTCDay(). Для их использования требуется после "get" подставить "UTC" .

В зависимости от смещения вашего местного часового пояса от UTC следующий код будет отображать разные часы:

Помимо вышеперечисленных методов, существуют два специальных метода без настройки UTC:

Он возвращает значение с временной меткой для заданной даты — количество миллисекунд, прошедших с 1 января 1970 года.

Эта функция возвращает разницу между UTC и местным часовым поясом в минутах:

Установка компонентов даты

Вы можете установить компоненты даты и времени с помощью следующих методов:

Читайте так же:
Как вернуть значение ячейки каждые пять или n-ю строку в Excel?

Эти методы имеют вариант UTC, в том числе setUTCHours().

Как мы видим, некоторые методы могут устанавливать сразу несколько элементов даты, например: setHours . Если компонент не указан, он не изменяется.

Автоисправление даты

Автокоррекция — очень полезное свойство объектов Date. Вы можете установить элементы даты вне обычного диапазона значений, и объект будет самокорректироваться.

Неправильные элементы даты автоматически назначаются другим.

Предположим, нам нужно продлить дату «28 февраля 2016 года» на два дня. В зависимости от того, високосный год или нет, результат будет «2 марта» или «1 марта». Нам не нужно беспокоиться об этом. Мы просто добавим два дня. Будьте уверены, объект Date сделает все остальное:

Эта функция часто используется для получения даты через определенный промежуток времени. Получите дату «через 70 секунд»:

В качестве альтернативы можно задать нулевые или даже отрицательные значения. Например:

Преобразование к числу, разность дат

Если объект Date преобразовать в число, мы получим метку времени, аналогичную date.getTime() :

Побочным эффектом является то, что даты могут быть вычтены, в результате чего разница составляет миллисекунды.

Эта техника может использоваться для измерения времени:

Date.now()

Если вы просто хотите измерить время, вам не нужен объект Date.

Существует специальный метод Date.now(), возвращающий текущую метку времени.

Семантически это эквивалентно new Date().getTime(), но метод не создает промежуточный объект Date. Поэтому этот метод работает быстрее и не загружает сборщик мусора.

Этот метод используется из практических соображений или когда важна скорость, например, при разработке игр JavaScript или других специализированных приложений.

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

Бенчмаркинг

Важно быть осторожным с функциями, зависящими от ЦП, при тестировании их производительности.

Например, сравните две функции, которые вычисляют разницу между двумя датами: Какой из них быстрее?

Расчеты, измеряющие эффективность, также называются контрольными показателями.

В обеих функциях разница лишь в том, что одна использует явный метод date.getTime() для получения миллисекунд времени, а другая просто преобразует дату в число. Результат всегда один и тот же.

Читайте так же:
Как быстро сохранить книгу в нескольких местах в Excel?

Но какая функция быстрее?

Выполняйте их снова и снова и отмечайте результаты. Функции в нашем случае очень простые, что означает, что необходимо не менее 100 000 повторений.

Метод getTime() работает намного быстрее, чем раньше! Причина в том, что нет преобразования типов, а интерпретаторы гораздо легче оптимизировать.

Отлично, это уже кое-что. Тем не менее, мы находимся на значительном расстоянии от хорошего эталона.

Пока выполнялся bench(diffSubtract), процессор параллельно делал что-то еще, что потребляло ресурсы. И к моменту запуска bench(diffGetTime) она уже завершилась.

Вполне реалистичный сценарий для современных многопроцессорных операционных систем.

В итоге первый эталон будет использовать меньше ресурсов процессора, чем второй. Это может исказить результаты.

Выполнение контрольных тестов более одного раза позволит получить более надежные результаты тестирования.

Современные интерпретаторы JavaScript применяют расширенную оптимизацию только к коду, который выполняется несколько раз (нет особой необходимости оптимизировать код, который выполняется редко). Поэтому в приведенном выше примере первый запуск не был оптимизирован должным образом. Предварительный запуск не является неоправданным, если мы хотим разогреться:

Интерпретаторы JavaScript выполняют различные оптимизации. Результаты искусственных тестов могут отличаться от результатов «нормального использования», особенно если это очень маленький тест, например, оператор или функция, встроенная в программу. Если вы хотите изучить, как работают интерпретаторы JavaScript, пожалуйста, изучите, как они работают. После этого вам, вероятно, больше не понадобятся микробенчмарки.

Отличный набор статей о V8 можно найти на http://mrale.ph.

Разбор строки с датой

С помощью Date.parse(str) можно считать дату из строки.

В результате формат строки должен быть следующим: YYYY-MM-DDTHH:mm:ss.sssZ, где:

  • YYYY-MM-DD – это дата: год-месяц-день.
  • Символ "T" используется в качестве разделителя.
  • HH:mm:ss.sss – время: часы, минуты, секунды и миллисекунды.
  • Необязательная часть ‘Z’ обозначает часовой пояс в формате +-hh:mm . Если указать просто букву Z , то получим UTC+0.

Кроме того, возможны и более короткие варианты, например, YYYY-MM-DD или YYYY-MM или даже YYYY.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector