2017-02-06 12 views
0

Я получаю дату от API, какКак преобразовать дату в другой формат в JavaScript?

2017-04-20T07:00:00Z 

Как я могу отформатировать его в дальнейшем?

20.04.2017 

Я использую React для отображения даты:

<div>{props.data.day}</div> 

Я попытался, например toISOString() срез (0, 10);., но не смог заставить это работать правильно. Я также попытался найти другие ответы, но пока не нашел решения.

+0

Возможно дубликата [* Изменение формата строки даты *] (http://stackoverflow.com/questions/4095677/changing-the-format-of-a-date-string). – RobG

+1

также: посмотрите на moment.js – nozzleman

+0

Вы хотите использовать дату UTC или конвертировать в локальную дату? Гавайи - это UTC-1000, поэтому для них 2017-04-20T07: 00: 00Z - 19 апреля 2017 года в 9 вечера (т. Е. 2017-04-19T021: 00: 00UTC-1000). – RobG

ответ

1

Следующие должны работать без каких-либо сторонних библиотек:

console.log(convertDate(new Date("2017-04-20T07:00:00Z"))); 

function convertDate(date) { 
    var day = date.getDate(); 
    day = day < 10 ? "0" + day : day; 
    var month = date.getMonth() + 1; 
    month = month < 10 ? "0" + month : month; 
    var year = date.getFullYear(); 
    return day + "." + month + "." + year; 
} 

Это дает:

20.04.2017 

Вы должны были бы добавить к вашей компонента в виде функции и поместите возвращаемое значение в качестве содержание вашего div.

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

1

Вы можете использовать MomentJS для разбора и форматирования строки даты. Выберите библиотеку, которая уже делает это для вас. Вы должны беспокоиться о своей бизнес-логике. Использовать зрелые; широко используемые библиотеки, чтобы сделать тяжелый подъем для вас.

console.log(moment('2017-04-20T07:00:00Z', moment.ISO_8601).format('DD.MM.YYYY'));
.as-console-wrapper { top: 0; max-height: 100% !important; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

Часть разработки программного обеспечения является кодом повторного использования. Поскольку вы не разрабатываете библиотеку дат, вам не стоит беспокоиться о ее создании.

0

Вы можете проанализировать результат с помощью регулярного выражения.

function convertDate(date){ 
    var parsedDate = date.match(/^([\d]{4})-([\d]{2})-([\d]{2})/) 
    return parsedDate[2] + '.' + parsedDate[1] + '.' + parsedDate[0] 
} 
convertDate('2017-04-20T07:00:00Z') 
1

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

var i ='2017-04-20T07:00:00Z'; 
var date = i.split('T'); 
console.log(date[0].split('-').reverse().join('.')) 

это дает:

20.04.2017 
+0

Это сработало хорошо, но я решил пойти с другим ответом. В любом случае спасибо – user45

0

Вы можете извлечь день, месяц и целый год, чтобы затем используйте, как хотите!

var oldDate = new Date('2017-04-20T07:00:00Z'); 

var d = oldDate.getDay().toString(); 
var m = oldDate.getMonth().toString(); 
var y = oldDate.getFullYear().toString(); 

if(d.length < 2){ 
    d = '0' + d; 
} 
if(m.length < 2){ 
    m = '0' + m; 
} 

var myDate = d + '/' + m + '/' + y; 

window.alert(myDate); 
Смежные вопросы