Как преобразовать строку во время jQuery. Тут есть несколько способов. Самый неинтересный способ — это разбивать строку по точке и двоеточию.
Рассмотрим пример. У нас есть строка ‘2016-11-27 10:20:17’. Бить по элементам мы не будем. Нужно заменить тире на правый слеш. Нам поможет функция replace(). Дважды меняем тире curent_date.replace("-", "/").replace("-", "/"). После того как замена элементов произошла, то воспользуемся функцией parse(). Далее мы должны вставить юникод-время в конструктор new Date(). В результате получается объект времени, а не строка.
Хочу показать вам как прибавить 1 месяц к дате. Воспользуемся конструктором new Date(2016, 11, 10, 13, 30). Теперь отнимем один месяц curent_date.setMonth(curent_date.getMonth() — 1). Функция getMonth() выведет номер месяца. Далее функция setMonth() установит новый новое значение для месяца.
Хочу показать способ преобразования полной даты в объект времени. Мы преобразуем строку в дату, а затем снова в строку (день.месяц.год часы:минуты:секунды). Если лишить функцию условий if-else, то будет вместо 00:00:00 непонятное значение 0:0:0. О работе со временем читайте в статье как работать с временем в jQuery.
На этом уроке мы познакомимся с объектом Date языка JavaScript и научимся его использовать на практике.
Объект Date
Объект Date представляет собой точку на оси времени и предназначен для хранения даты и времени с точностью до миллисекунды.
Объект Date можно создавать различными способами:
- Без параметров (хранит дату и время, которая была в момент создания объекта на локальном компьютере);
- С одним числовым параметром, в этом случае дата и время задаётся как количество миллисекунд, прошедших с 1 января 1970 00:00:00 UTC;
- С одним строковым параметром, в этом случае JavaScript пытается разобрать строку с помощью метода Date.parse , т.е. преобразовать в дату.
- Используя множество параметров перечисленных через запятую: год (4 цифры), месяц (отсчёт ведётся с 0), день (1..31), часы (0..23), минуты (0..59), секунды (0..59), миллисекунды (0..999). Причём обязательными являются только первых 2 параметра.
Примечание: Если Вам необходимо установить дату и время в UTC, то можете воспользоваться методом Date.UTC :
Методы объекта Date
Методы объекта Date можно разделить на следующие категории:
- для получения отдельных компонентов даты и времени (начинаются методы с глагола get );
- для установления даты и времени (начинаются методы с глагола set );
- для преобразования даты в строку (начинаются методы с to );
- для преобразования строки в дату: метод Date.parse .
Методы для получения отдельных компонентов объекта Date
- Методы объекта 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;
Методы для установления отдельных компонентов объекта Date
- Методы объекта Date для установления отдельных компонентов даты и времени в местном часовом поясе:
- setFullYear() — метод, который устанавливает год. Кроме этого, данный метод имеет ещё 2 необязательных параметра, с помощью которых Вы можете дополнительно установить месяц и число.
- setMonth() — метод, который устанавливает месяц в числовом формате: 0..11 (0 — январь, 1-февраль, 2 март, . 11 — декабрь). Кроме этого, данный метод имеет ещё 1 необязательный параметр, с помощью которого Вы можете дополнительно установить число.
- setDate() — метод, который устанавливает число.
- setHours() — метод, который устанавливает количество часов: 0..23. Кроме этого, данный метод имеет ещё 3 необязательных параметра, с помощью которых Вы можете дополнительно установить минуты, секунды и миллисекунды.
- setMinutes() — метод, который устанавливает количество минут: 0..59. Кроме этого, данный метод имеет ещё 2 необязательных параметра, с помощью которых Вы можете дополнительно установить секунды и миллисекунды.
- setSeconds() — метод, который возвращает количество секунд: 0..59. Кроме этого, данный метод имеет один необязательный параметр, с помощью которого Вы можете дополнительно установить миллисекунды.
- setMilliseconds() — метод, который устанавливает количество миллисекунд: 0..999.
Примечание: В JavaScript некорректно установленная дата приводит не к ошибкам, а лишь к тому, что она автоматически распределяется по остальным компонентам объекта Date.
Например, при установлении даты newDate.setFullYear = new Date(2015,01,40) (т.е. 40.01.2015) ошибки не произойдёт. Число 40 распределится следующим образом: 9 февраля 2015 года (т.к. в январе 31 день, то число будет равно 9 (40-31), а месяц +1).
Преобразования даты в строку
В JavaScript существует огромное количество методов, предназначенных для перевода даты в строку.
Первую группу составляют методы, результат которых зависит от используемого браузера. Т.е. формат возвращаемой строки зависит от производителя браузера.
Как преобразовать строку в дату в JavaScript?
29 ответов
лучшим строковым форматом для синтаксического анализа строк является формат даты ISO вместе с конструктором объекта даты JavaScript.
примеры формата ISO: YYYY-MM-DD или YYYY-MM-DDTHH:MM:SS .
Но подождите! просто использование "формата ISO" не работает надежно само по себе. Строка иногда анализируется как UTC, а иногда как localtime (на основе поставщика браузера и версии). Лучшей практикой всегда должно быть хранение дат в формате UTC и выполнение вычислений как UTC.
чтобы проанализировать дату как UTC, добавьте Z, например: new Date(‘2011-04-11T10:20:30Z’) .
для отображения даты в формате UTC, используйте .toUTCString() ,
чтобы отобразить дату в локальном времени пользователя, используйте .toString() .
для старой совместимости Internet Explorer (т. е. версии менее 9 не поддерживают формат ISO в конструкторе даты), вы должны разделить строковое представление datetime на его части и тогда вы можете использовать конструктор, используя части datetime, например: new Date(‘2011′, ’04’ — 1, ’11’, ’11’, ’51’, ’00’) . Обратите внимание, что количество месяцев должно быть на 1 меньше.
альтернативный метод-используйте соответствующую библиотеку:
вы также можете воспользоваться библиотекой момент.js что позволяет анализировать дату с заданным часовым поясом.
к сожалению, я узнал, что
возвращает "Ср 02 апреля 2014". Я знаю, что это звучит безумно, но это происходит для некоторых пользователей.
на пуленепробиваемый решение следующий: