2016-09-14 4 views
1

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

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

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

+0

Вы хотите использовать 'moment.js' или хотите только чистый javascript? – Mohammad

+0

'что-то вроде' или 'точно '? – Xotic750

ответ

2

Использование moment.js,

Вы можете сделать это похоже на объект JavaScript Дата

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>

+0

Это сработало красиво! Спасибо за помощь в форматировании! – SteveV

2

С 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>

-1

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

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

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

Do добавляет «энный» на сегодняшний день, сделать его D только иметь ряд, показывающий, но так как Youre писать все слова, его лучше использовать «энный»

0

Вы можете использовать простые методы Javascript Даты что-то подобное:

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

OP не просит «что-то подобное». –

+1

«... Так, например, 02/12/2013 будет конвертировать в ЧТО-ТО, КАК Вторник 12 февраля 2013 года». Также быстрый String.replace() может исправить формат без необходимости внешней библиотеки – StackOverMySoul

+0

Разбор строк с конструктором Date (или Date.parse) не рекомендуется, поскольку он в значительной степени зависит от реализации и ненадежности. – RobG

0

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

0

Если вы не хотите, любые другие скрипты, которые вы могли бы использовать 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

1

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

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

Синтаксический выполняется вручную, Date.parse

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

Date.UTC используется для обеспечения даты parts для Intl.DateTimeFormat#format.

метод

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

Наконец , «s удаляются из 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);

+0

Не все текущие браузеры [* поддерживают объект Intl *] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Intl#Browser_compatibility) (мобильная поддержка особенно бедна), и не много браузеров в текущем использовании. – RobG

+0

Все основные браузеры, кроме Safari, поддерживают базовую реализацию, мобильные телефоны, о которых я понятия не имею, но, как и в ES5, ES6 и ES7, для этого есть прокладка/полиполк, но я никогда не тестировал ее. https://github.com/andyearnshaw/Intl.js/ Как и все, поддержка будет улучшаться. Я не знаю, поддерживают ли его транспиляторы. – Xotic750

0

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

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 
}