Подтвердить что ты не робот

Преобразовать дату ISO в формат даты гггг-мм-дд в JavaScript

Как получить дату в формате гггг-мм-дд из даты ISO 8601?

Моя дата 8601 -

2013-03-10T02:00:00Z

Как я могу получить следующее?

2013-03-10
4b9b3361

Ответ 1

Попробуйте это

date = new Date('2013-03-10T02:00:00Z');
date.getFullYear()+'-' + (date.getMonth()+1) + '-'+date.getDate();//prints expected format.

Обновление: -

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

date = new Date('2013-08-03T02:00:00Z');
year = date.getFullYear();
month = date.getMonth()+1;
dt = date.getDate();

if (dt < 10) {
  dt = '0' + dt;
}
if (month < 10) {
  month = '0' + month;
}

console.log(year+'-' + month + '-'+dt);

Ответ 2

Просто обрежьте строку:

var date = new Date("2013-03-10T02:00:00Z");
date.toISOString().substring(0, 10);

Или если вам нужна только дата из строки.

var strDate = "2013-03-10T02:00:00Z";
strDate.substring(0, 10);

Ответ 3

Вы можете проверить Moment.js, Luxon, date-fns или Day.js для приятного манипулирования датами.

Или просто извлеките первую часть вашей строки ISO, она уже содержит то, что вы хотите. Вот пример разбиения на T:

"2013-03-10T02:00:00Z".split("T")[0] // "2013-03-10"

Ответ 4

Moment.js будет обрабатывать форматирование даты для вас. Вот как это можно сделать с помощью тега JavaScript, а затем пример того, как использовать Moment.js для форматирования даты.

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>

moment("2013-03-10T02:00:00Z").format("YYYY-MM-DD") // "2013-03-10"

Ответ 5

Moment.js - довольно большая библиотека для использования в одном случае. Я рекомендую использовать date-fns вместо этого. Он предлагает в основном большинство функциональных возможностей Moment.js с гораздо меньшим размером пакета и множеством formatting options.

import format from 'date-fns/format'
format('2013-03-10T02:00:00Z', 'YYYY-MM-DD'); // 2013-03-10, YYYY-MM-dd for 2.x

Следует отметить, что, поскольку это формат времени ISO 8601, браузер обычно конвертирует время из UTC в локальный часовой пояс. Хотя это простой случай использования, где вы, вероятно, можете сделать '2013-03-10T02:00:00Z'.substring(0, 10);.

Для более сложных преобразований date-fns это путь.

Ответ 6

Передайте свою дату в объекте date:

var d = new Date('2013-03-10T02:00:00Z');
d.toLocaleDateString().replace(/\//g, '-');

Ответ 7

Вот что я делаю, чтобы получить только дату:

let isoDate = "2013-03-10T02:00:00Z";

alert(isoDate.split("T")[0]);

Ответ 8

Использование:

new Date().toISOString().substring(0, 10);

Ответ 9

let isoDate = "2013-03-10T02:00:00Z";
var d = new Date(isoDate);
d.toLocaleDateString('en-GB'); // dd/mm/yyyy
d.toLocaleDateString('en-US'); // mm/dd/yyyy

Ответ 10

Это приведет к выводу даты в формате ГГГГ-ММ-ДД:

let date = new Date();
date = date.toISOString().slice(0,10);

Ответ 11

Если у вас есть объект даты:

let date = new Date()
let result = date.toISOString().split'T'[0]

console.log(result)

Ответ 12

Расширение rk rk solution: Если вы хотите, чтобы формат включал время, вы можете добавить toTimeString() к вашей строке, а затем удалить часть GMT следующим образом:

var d = new Date('2013-03-10T02:00:00Z');
var fd = d.toLocaleDateString() + ' ' + d.toTimeString().substring(0, d.toTimeString().indexOf("GMT"));

Ответ 13

    var d = new Date("Wed Mar 25 2015 05:30:00 GMT+0530 (India Standard Time)");
    alert(d.toLocaleDateString());

Ответ 14

let dt = new Date('2013-03-10T02:00:00Z');
let dd = dt.getDate();
let mm = dt.getMonth() + 1;
let yyyy = dt.getFullYear();

if (dd<10) {
    dd = '0' + dd;
}
if (mm<10) {
    mm = '0' + mm;
}
return yyyy + '-' + mm + '-' + dd;

Ответ 15

Я использовал это:

HTMLDatetoIsoDate(htmlDate){
  let year = Number(htmlDate.toString().substring(0, 4))
  let month = Number(htmlDate.toString().substring(5, 7))
  let day = Number(htmlDate.toString().substring(8, 10))
  return new Date(year, month - 1, day)
}

isoDateToHtmlDate(isoDate){
  let date = new Date(isoDate);
  let dtString = ''
  let monthString = ''
  if (date.getDate() < 10) {
    dtString = '0' + date.getDate();
  } else {
    dtString = String(date.getDate())
  }
  if (date.getMonth()+1 < 10) {
    monthString = '0' + Number(date.getMonth()+1);
  } else {
    monthString = String(date.getMonth()+1);
  }
  return date.getFullYear()+'-' + monthString + '-'+dtString
}

Источник: http://gooplus.fr/en/2017/07/13/angular2-typescript-isodate-to-html-date/

Ответ 16

Это может быть покрыто датой и временем:

var d = date.format(new Date(), 'YYYY-MM-DD');
console.log(d);
<script src="https://cdn.jsdelivr.net/npm/date-and-time/date-and-time.min.js"></script>

Ответ 17

Используйте приведенный ниже код. Это полезно для вас.

let currentDate = new Date()
currentDate.toISOString()