Преобразование даты ММ / ДД / ГГГГ в месяц, день, год

Я пытаюсь преобразовать дату MM/DD/YYYY в длинную дату. Так, например, 02/12/2013 превратится в что-то вроде Tuesday February 12 2013,

Я посмотрел на MomentJS и другие методы JS, но на самом деле ничего не получилось, что я хотел. Или, по крайней мере, я так не думал.

Есть ли способ сделать это преобразование даты точно?

8 ответов

Решение

Используя момент.js,

Вы можете сделать это так с помощью объекта JavaScript Date

var date = new Date(2013, 1, 12);
console.log(moment(date).format('dddd MMMM D Y'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.0/moment.min.js"></script>

Если вы хотите преобразовать строку даты в длинную строку формата даты, вы можете сделать это следующим образом.

var longDateStr = moment('02/12/2013', 'M/D/Y').format('dddd MMMM D Y');
console.log(longDateStr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.0/moment.min.js"></script>

Если вам не нужны другие скрипты, вы можете использовать Date и некоторые массивы

var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
var now = new Date('02/12/2013');
console.log(days[now.getDay()] + ' ' + months[now.getMonth()] + ' ' + now.getDate() + ' ' + now.getFullYear()); //Tuesday February 12 2013

Я думаю, что есть простой способ сделать это.

function getData (){
  var d = new Date("02/12/2013");
  var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
  var n = d.toLocaleDateString('en-US',options);
  var t = d.toLocaleTimeString('en-GB')
  var replase = n.replace(new RegExp(',', 'g'),' ')
  document.getElementById("demo").innerHTML = replase
 }

С moment.js все довольно просто:

console.log(moment('02/12/2013', 'MM/DD/YYYY').format('dddd MMMM D Y'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.0/moment.min.js"></script>

В современном браузере вы можете использовать Intl API

Объект Intl - это пространство имен для API интернационализации ECMAScript, которое обеспечивает сравнение строк с учетом языка, форматирование чисел и форматирование даты и времени. Конструкторы для объектов Collator, NumberFormat и DateTimeFormat являются свойствами объекта Intl.

Разбор выполняется вручную, Date.parse

Не рекомендуется использовать Date.parse, так как до ES5 разбор строк полностью зависел от реализации. По-прежнему существует много различий в том, как разные хосты анализируют строки даты, поэтому строки даты следует анализировать вручную (библиотека может помочь, если нужно разместить много разных форматов).

Date.UTC используется для предоставления даты от parts для формата Intl.DateTimeFormat#.

Метод Date.UTC() принимает те же параметры, что и самая длинная форма конструктора, и возвращает количество миллисекунд в объекте Date с 1 января 1970 года, 00:00:00 по универсальному времени.

Наконец то , удалены из en-US форматированная строка, чтобы она соответствовала вашим требованиям.

const parts = '02/12/2013'.split('/');
parts.unshift(parts.pop());
parts[1] -= 1;
const dateString = new Intl.DateTimeFormat('en-US', {
  weekday: 'long',
  year: 'numeric',
  month: 'long',
  day: 'numeric',
  timeZone: 'UTC'
}).format(Date.UTC(...parts)).replace(/,/g, '');
console.log(dateString);

Вы можете использовать простые методы Javascript Date для чего-то похожего:

var date  = new Date("01/01/2000")
date.toDateString()   //"Sat Jan 01 2000"

FullJS:

function mydate(date)
{
  var
    month = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
    days  = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
  ;
  return days[date.getDay()]+' '+month[date.getMonth()]+' '+date.getDate()+' '+date.getFullYear()
}

console.log(mydate(new Date()));

Ссылка: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

Используя момент,

moment().format('dddd MMMM Do YYYY');

на главной странице momentJS вы можете увидеть список всех возможных форматов даты ( http://momentjs.com/).

Do добавляет "nth" к дате, сделайте это D чтобы показывать только цифры, но так как вы пишете все словами, лучше использовать "nth"

Другие вопросы по тегам