Javascript преобразование строки в дату
Функция Number() преобразует в тип Number, String() в тип String, Boolean() в тип Boolean.
Типы данных в JavaScript
В JavaScript существует 5 типов данных, которые могут содержать значения:
Есть 3 типа объектов:
И 2 типа данных, которые не могут содержать значения:
Оператор typeof
Чтобы определить тип переменной JavaScript, используется оператор typeof.
- У NaN тип number
- У массива тип object
- У даты тип object
- У null тип object
- У неопределенной переменной тип undefined *
- У переменной, которой не присвоено значение, тоже тип undefined *
Нельзя при помощи оператора typeof определить, является ли объект JavaScript массивом (или датой).
Оператор typeof это не переменная. Это оператор. У операторов ( + — * / ) нет типов. Однако оператор typeof всегда возвращает строку (содержащую тип операнда).
Свойство constructor
Свойство constructor возвращает функцию-конструктор у всех переменных JavaScript.
Вы можете проверить свойство constructor, чтобы определить, является ли объект массивом (содержит слово "Array"):
Или еще проще, вы можете проверить, является ли объект функцией Array:
Аналогичным образом можно проверить является ли переменная объектом Date.
Преобразование типов в JavaScript
Переменные JavaScript могут быть преобразованы в новые переменные и другие типы данных:
- при помощи функции JavaScript
- автоматически самим JavaScript
Преобразование чисел в строки
Глобальный метод String() позволяет преобразовывать числа в строки.
Его можно использовать с любыми видами чисел — константами, переменными или выражениями:
Метод toString() объекта Number делает то же самое.
В главе Методы объекта Number вы найдете другие методы, которые можно использовать для преобразования чисел в строки:
Метод | Описание |
---|---|
toExponential() | Возвращает строку с округленным числом, записанным в экспоненциальной нотации. |
toFixed() | Возвращает строку с числом, записанным с заданным количеством цифр после десятичной точки. |
toPrecision() | Возвращает строку с числом заданной длины. |
Преобразование логических значений (тип Boolean) в строку
Глобальный метод String() позволяет преобразовывать логические значения в строки.
Метод toString() объекта Boolean делает то же самое.
Преобразование даты (тип Date) в строку
Глобальный метод String() позволяет преобразовывать дату (тип Date) в строку.
Метод toString() объекта Date делает то же самое.
В главе Методы объекта Date вы найдете другие методы, которые можно использовать для преобразования даты в строку:
Метод | Описание |
---|---|
getFullYear() | Получить год в формате четырех цифр (гггг) |
getMonth() | Получить номер месяца (0-11) |
getDate() | Получить число месяца (1-31) |
getHours() | Получить час (0-23) |
getMinutes() | Получить минуты (0-59) |
getSeconds() | Получить секунды (0-59) |
getMilliseconds() | Получить миллисекунды (0-999) |
getTime() | Получить время (количество миллисекунд, прошедших с 1 января 1970) |
getDay() | Получить номер дня недели (0-6) |
Преобразование строк в числа
Глобальный метод Number() позволяет преобразовывать строки в числа.
Строки, содержащие числа (как "3.14"), преобразовываются в числа (как 3.14). Пустые строки преобразовываются в 0. Все остальные строки преобразовываются в NaN (Не число).
В главе Методы объекта Number вы найдете другие методы, которые можно использовать для преобразования строк в числа:
Метод | Описание |
---|---|
parseFloat() | Парсит строку и возвращает число с плавающей точкой. |
parseInt() | Парсит строку и возвращает целое число. |
Унарный оператор +
Унарный оператор + также можно использовать для преобразования переменных в числовой тип:
Если переменная не может быть преобразована, то она все равно станет числом, но со значением NaN (Не число):
Преобразование логических значений (тип Boolean) в число
Глобальный метод Number() позволяет преобразовывать логические значения в числа.
Преобразование даты (тип Date) в число
Глобальный метод Number() позволяет преобразовывать значения даты (тип Date) в числа.
Метод getTime() объекта Date делает то же самое.
Автоматическое преобразование типов
Когда JavaScript приходится оперировать с "неправильным" типом данных, интерпретатор попытается преобразовать тип этого значения в "правильный".
Результат получается не всегда таким, как вы ожидаете:
Автоматическое преобразование строк
JavaScript автоматически вызывает метод переменной toString(), когда вы пытаетесь "вывести" объект или переменную:
Числа и логические значения также преобразуются, но это не так заметно:
Таблица преобразования типов JavaScript
В следующей таблице показаны результаты преобразования различных значений JavaScript в типы Number, String и Boolean:
Оригинальное значение | Преобразованное в Number | Преобразованное в String | Преобразованное в Boolean |
---|---|---|---|
false | 0 | "false" | false |
true | 1 | "true" | true |
0 | 0 | "0" | false |
1 | 1 | "1" | true |
"0" | 0 | "0" | true |
"000" | 0 | "000" | true |
"1" | 1 | "1" | true |
NaN | NaN | "NaN" | false |
Infinity | Infinity | "Infinity" | true |
-Infinity | -Infinity | "-Infinity" | true |
"" | 0 | "" | false |
"20" | 20 | "20" | true |
"twenty" | NaN | "twenty" | true |
[] | 0 | "" | true |
[20] | 20 | "20" | true |
[10,20] | NaN | "10,20" | true |
["twenty"] | NaN | "twenty" | true |
["ten","twenty"] | NaN | "ten,twenty" | true |
function()<> | NaN | "function()<>" | true |
NaN | "[object Object]" | true | |
null | 0 | "null" | false |
undefined | NaN | "undefined" | false |
Значения в кавычках показывают строковые значения.
Красным цветом выделены значения, которые не всегда ожидаемы.
Как преобразовать строку в дату в 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". Я знаю, что это звучит безумно, но это происходит для некоторых пользователей.
на пуленепробиваемый решение следующий:
Как преобразовать строку в дату в JavaScript?
30 ответов
Наилучшим строковым форматом для синтаксического анализа строк является формат даты по дате вместе с конструктором объекта Date Date.
Примеры формата ISO: YYYY-MM-DD или YYYY-MM-DDTHH:MM:SS .
Но подождите! Просто использование «формата ISO» не работает само по себе. Строка иногда анализируется как UTC, а иногда и локально (на основе поставщика и версии браузера). Лучшая практика всегда должна заключаться в том, чтобы хранить даты как UTC и делать вычисления в формате UTC.
Чтобы разобрать дату в формате UTC, добавьте Z — например: new Date(‘2011-04-11T10:20:30Z’) .
Чтобы отобразить дату в UTC, используйте .toUTCString() ,
для отображения даты в локальном времени пользователя используйте .toString() .
Дополнительная информация о MDN | Дата и этот ответ .
Для старой совместимости с Internet Explorer (версии IE менее 9 не поддерживают формат ISO в конструкторе даты), вы должны разделить представление строки даты и времени на его части, а затем вы можете использовать конструктор, использующий детали datetime, например: new Date(‘2011′, ’04’ — 1, ’11’, ’11’, ’51’, ’00’) . Обратите внимание, что номер месяца должен быть меньше 1.
Альтернативный метод — используйте соответствующую библиотеку: