Есть ли метод в JS, чтобы подсунуть дату в требуемом формате для парсинга?

Ссылка скопирована
1 ответ

Не могу найти.

Нужно вот такую дату: '01.02.2024' превратить в секунды.

Есть ли в JS такой метод как в PHP strtotime?

Дополнительно:

Публикую собственный, полученный код:

const date = '01.02.2024'; const dateSplitted = date.split('.'); const dateReversed = dateSplitted.reverse(); const dateReformatted = dateReversed.join('-'); const milliseconds = Date.parse(dateReformatted); const seconds = milliseconds / 1000;

const date = '01.02.2024'; const dateSplitted = date.split('.'); const dateReversed = dateSplitted.reverse(); const dateReformatted = dateReversed.join('-'); const milliseconds = Date.parse(dateReformatted); const seconds = milliseconds / 1000;

Метода нет, но полно библиотек, которые это делают. Но можно и самостоятельно вот к такой простой конструкции привести исходную строку: +new Date('2024', +'02' - 1, '01') / 1000.

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

Есть ли метод в JS, чтобы подсунуть дату в требуемом формате для парсинга?

const [year, month, day] = '01.02.2024'.split('.').reverse(); const seconds = (new Date(year, Number(month) - 1, day)) / 1000; // 1706734800

const [year, month, day] = '01.02.2024'.split('.').reverse(); const seconds = (new Date(year, Number(month) - 1, day)) / 1000; // 1706734800

Главное не забыть от month отнять единицу, потому что месяцы начинаются с 0

  • Я, всё-таки, не вполне понимаю вот эту конструкцию Number(month) - 1.
    Можете написать более развёрнуто, зачем это нужно?
    Спасибо!
  • Shimpanze, разбив строку по точке мы получаем массив строк. Чтобы из "02" вычесть 1 надо "02" привести к числу, чем и занимается Number. Ну а -1 вы должны понимать ))
  • Алексей Ярков, Да, я уже прочёл, что месяцы начинаются с нуля... Очередной ляп разработчиков языка JS.

Ответы:

Date.parse('01.02.2024') / 1000

  • См. спойлер в моём ответе.
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Сергей Миронов Ответ

Да, в JavaScript есть метод для форматирования даты в требуемом формате для парсинга. Для этого можно использовать объект `Date` и методы `getFullYear()`, `getMonth()`, `getDate()`, `getHours()`, `getMinutes()`, `getSeconds()` и `toISOString()`.

Пример использования:

let currentDate = new Date();
let formattedDate = currentDate.getFullYear() + '-' + (currentDate.getMonth() + 1) + '-' + currentDate.getDate() + 'T' + currentDate.getHours() + ':' + currentDate.getMinutes() + ':' + currentDate.getSeconds() + 'Z';
 
console.log(formattedDate);

let currentDate = new Date(); let formattedDate = currentDate.getFullYear() + '-' + (currentDate.getMonth() + 1) + '-' + currentDate.getDate() + 'T' + currentDate.getHours() + ':' + currentDate.getMinutes() + ':' + currentDate.getSeconds() + 'Z'; console.log(formattedDate);

В этом примере мы создаем новый объект `Date`, затем используем методы `getFullYear()`, `getMonth()`, `getDate()`, `getHours()`, `getMinutes()` и `getSeconds()` для получения нужных значений даты и времени. Затем мы объединяем эти значения в строку в требуемом формате.

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

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно