Как отформатировать JavaScript объект даты, используя Intl.DateTimeFormat - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь показать дату в строковом формате, как это сделано в PHP (с использованием date ()).

let checkoutDate = new Date();

var formatter = new Intl.DateTimeFormat('en-us', {
  weekday: 'long',
  year: 'numeric',
  month: 'numeric',
  day: 'numeric',
  hour: 'numeric',
  minute: 'numeric',
  second: 'numeric',
  fractionalSecondDigits: 3,
  hour12: true,
  timeZone: 'UTC'
});

console.log(formatter.format(checkoutDate));

Вывод: Friday, 3/13/2020, 2:15:03 PM Как получить что-то вроде это: Friday, 13th March 2020?

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Вот моя версия, вы можете использовать функцию formatToParts () , чтобы получить их по частям, предполагая, что вы будете использовать один и тот же формат каждый раз, а затем получать их по массиву объектов, чтобы вы могли создать ваш собственный формат, позволяющий вам добавить собственный текст. Хотя было бы намного проще и эффективнее, если бы вы использовали какой-нибудь другой форматер даты.

let checkoutDate = new Date();
var th = 'th';
var formatter = new Intl.DateTimeFormat('en-us', {
  weekday: 'long',
  year: 'numeric',
  month: 'long',
  day: 'numeric',
  fractionalSecondDigits: 3,
  timeZone: 'UTC'
});
var formatted = formatter.formatToParts(checkoutDate);

var day = formatted[4].value;
var wr = checker(day);

console.log(wr);
console.log(formatted[0].value+ ',', day +wr, formatted[2].value, formatted[6].value);

function checker(x){
    if (x > 3 && x < 21) return 'th';
    switch (x % 10) {
        case 1:  return "st";
        case 2:  return "nd";
        case 3:  return "rd";
        default: return "th";
    }
}
//output Friday, 13th March 2020
0 голосов
/ 13 марта 2020

Вы можете попробовать это следующим образом:

var isoString = new Date().toISOString();
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var date = new Date(isoString);
var americanDate = new Intl.DateTimeFormat("en-US", options).format(date);
console.log(americanDate); //Friday, March 13, 2020

Используя moment.js, вы можете улучшить формат даты и времени.

...