2017-02-06 2 views
0

Ich bin ein Datum aus einer API bekommen alsWie konvertiert man ein Datum in ein anderes Format in JavaScript?

2017-04-20T07:00:00Z 

Wie konnte ich es in das folgende Format?

20.04.2017 

Ich verwende reagieren, um das Datum anzuzeigen:

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

I beispielsweise versucht toISOString() slice (0, 10);. aber das konnte nicht richtig funktionieren. Ich habe auch versucht, andere Antworten zu suchen, konnte aber noch keine Lösung finden.

+0

Wahrscheinlich Duplikat von [* Ändern des Formats eines Datums string *] (http://stackoverflow.com/questions/4095677/changing-the-format-of-a-date-string). – RobG

+1

auch: werfen Sie einen Blick auf moment.js – nozzleman

+0

Möchten Sie UTC-Datum oder konvertieren zu lokalen Datum? Hawaii ist UTC-1000, also für sie 2017-04-20T07: 00: 00Z ist 19. April 2017 um 9 Uhr (d. H. 2017-04-19T021: 00: 00UTC-1000). – RobG

Antwort

1

Im Folgenden ohne Bibliotheken von Drittanbietern funktionieren sollte:

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; 
} 

Das gibt:

20.04.2017 

Sie würden dies als eine Funktion, um Ihre Komponente hinzufügen müssen und den Rückgabewert als der Ort, Inhalt Ihrer div.

Bitte beachten Sie, dass Sie, wie in anderen Antworten erwähnt, besser eine Drittanbieter-Bibliothek verwenden, die mit Zeitzonen und anderen zeitbasierten Problemen umgehen kann, ohne dass Sie darüber nachdenken müssen.

1

Sie könnten MomentJS verwenden, um die Datumszeichenfolge zu analysieren und zu formatieren. Wählen Sie eine Bibliothek, die dies bereits für Sie erledigt. Sie sollten sich Sorgen um Ihre Geschäftslogik machen. Verwenden Sie reifen; weit verbreitete Bibliotheken, um das schwere Heben für Sie zu erledigen.

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>

Teil der Software-Entwicklung ist Code-Wiederverwendung. Da Sie keine Date-Bibliothek entwickeln, sollten Sie sich keine Gedanken darüber machen, eine zu erstellen.

0

Sie können das Ergebnis mit Regex analysieren.

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

Wenn Sie das Datum als String speichern können Sie es auf diese Weise konvertieren:

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

ergibt dies:

20.04.2017 
+0

Das funktionierte gut, aber ich entschied mich für eine andere Antwort. Trotzdem danke – user45

0

Sie können den Tag extrahieren, Monat und das ganze Jahr, um dann Verwenden Sie, wie Sie möchten!

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); 
Verwandte Themen