Funktion zum Konvertieren des Zeitstempels in ein menschliches Datum in Javascript

79

Wie konvertiere ich diesen Zeitstempel 1382086394000in 2013-10-18 08:53:14eine Funktion in Javascript? Derzeit habe ich diese Funktion:

function cleanDate(d) {return new Date(+d.replace(/\/Date\((\d+)\)\//, '$1'));}
Willy Mularto
quelle
10
Neben all den Antworten hier ist der De-facto-Standard in js Datum / Uhrzeit-Handhabung derzeit moment.js überrascht, dass niemand es hier erwähnte
Alonisser
2
@ alonisser - vielleicht, weil das Konvertieren eines Zeitwerts in ein Datum trivial ist. Das Formatieren ist auch nicht besonders schwierig.
RobG

Antworten:

125

Der Wert 1382086394000 ist wahrscheinlich ein Zeitwert, dh die Anzahl der Millisekunden seit 1970-01-01T00: 00: 00Z. Sie können damit ein ECMAScript-Datumsobjekt mit dem Datumskonstruktor erstellen :

var d = new Date(1382086394000);

Wie Sie das in etwas Lesbares umwandeln, liegt bei Ihnen. Durch einfaches Senden an die Ausgabe sollte die interne (und vollständig implementierungsabhängige) toString- Methode * aufgerufen werden, die normalerweise die entsprechende Systemzeit in einer für Menschen lesbaren Form druckt , z

Fri Oct 18 2013 18:53:14 GMT+1000 (EST) 

In ES5 gibt es einige andere integrierte Formatierungsoptionen:

und so weiter. Beachten Sie, dass die meisten von der Implementierung abhängig sind und in verschiedenen Browsern unterschiedlich sind. Wenn Sie in allen Browsern dasselbe Format wünschen, müssen Sie das Datum selbst formatieren, z.

alert(d.getDate() + '/' + (d.getMonth()+1) + '/' + d.getFullYear());

* Das Format von Date.prototype.toString wurde in ECMAScript 2018 standardisiert . Es kann eine Weile dauern, bis es in allen Implementierungen allgegenwärtig ist, aber zumindest die gängigeren Browser unterstützen es jetzt.

RobG
quelle
32

Das funktioniert gut. Im chromeBrowser eingecheckt :

var theDate = new Date(timeStamp_value * 1000);
dateString = theDate.toGMTString();
alert(dateString );
Optimus Krish
quelle
8
toGMTString () ist veraltet, verwenden Sie stattdessen toISOString () oder toUTCString ()
Nicolas Leucci
Achtung * - *: nicht mit multiplizieren1000 . Sonst wirst du in den zukünftigen Raum hyperloop !!
vrintle
2
Nachdem ich 1586855504 mit 1000 multipliziert hatte, bekam ich das richtige Ergebnis, sonst lieferte es 1970
Warewolf
Die Multiplikation mit 1000 hängt davon ab, in welchem ​​Zeitstempel sich Sekunden, Millisekunden oder Millisekunden befinden
Tejashwi Kalp Taru,
26

warum nicht einfach

new Date (timestamp);

Ein Datum ist ein Datum, die Formatierung ist eine andere Sache.

Gruseliger Wombat
quelle
21

Moment.js kann Unix-Zeitstempel in jedes benutzerdefinierte Format konvertieren

In diesem Fall : var time = moment(1382086394000).format("DD-MM-YYYY h:mm:ss");

wird drucken 18-10-2013 11:53:14;

Hier ist ein Plunker , der dies demonstriert.

svarog
quelle
Klingt so, als wäre das übertrieben
ʎzɐɹƆ
Vielen Dank. das hat mir wirklich geholfen.
Akram Chauhan
13

Hier sind die einfachen Möglichkeiten für jede Verwirrung im Datumsformat:

für aktuelles Datum:

var current_date=new Date();

um den Zeitstempel des aktuellen Datums zu erhalten:

var timestamp=new Date().getTime();

So konvertieren Sie ein bestimmtes Datum in einen Zeitstempel:

var timestamp_formation=new Date('mm/dd/yyyy').getTime();

Zeitstempel in Datum umwandeln:

    var timestamp=new Date('02/10/2016').getTime();
    var todate=new Date(timestamp).getDate();
    var tomonth=new Date(timestamp).getMonth()+1;
    var toyear=new Date(timestamp).getFullYear();
    var original_date=tomonth+'/'+todate+'/'+toyear;

  OUTPUT:
 02/10/2016
Trojaner
quelle
ja @melpomene, die Hälfte des Codes ist irrelevant, aber ich habe das geschrieben, um weitere Zweifel an der Datumsbildung auszuräumen .. !!! und noch etwas, das ich nicht von irgendwoher kopiert habe. Ich habe es in meinem eigenen Code versucht und vor 2 Tagen habe ich daran gearbeitet
Trojaner
1
Es spielt keine Rolle, ob Sie es buchstäblich kopiert haben oder nicht. Der Punkt ist, dass alle Informationen bereits in einer anderen Antwort vorhanden sind. Übrigens erzeugt Ihr letztes Beispiel nicht die Ausgabe, von der Sie behaupten, dass sie es tut.
Melpomene
Die angezeigte Ausgabe stimmt nicht mit der Code-Ausgabe überein (10.02.2016)
Suyash Mittal
9

Wir müssen neue Funktionen mit JavaScript erstellen.

function unixTime(unixtime) {

    var u = new Date(unixtime*1000);

      return u.getUTCFullYear() +
        '-' + ('0' + u.getUTCMonth()).slice(-2) +
        '-' + ('0' + u.getUTCDate()).slice(-2) + 
        ' ' + ('0' + u.getUTCHours()).slice(-2) +
        ':' + ('0' + u.getUTCMinutes()).slice(-2) +
        ':' + ('0' + u.getUTCSeconds()).slice(-2) +
        '.' + (u.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) 
    };

console.log(unixTime(1370001284))

2016-04-30 08:36:26.000
KARTHIKEYAN.A
quelle
3

formatDate ist die Funktion, die Sie aufrufen und das Datum übergeben können, an das Sie formatieren möchten dd/mm/yyyy

var unformatedDate = new Date("2017-08-10 18:30:00");
 
$("#hello").append(formatDate(unformatedDate));
function formatDate(nowDate) {
	return nowDate.getDate() +"/"+ (nowDate.getMonth() + 1) + '/'+ nowDate.getFullYear();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="hello">


</div>

Schwarze Mamba
quelle
1

Dies habe ich für die Instagram-API getan. konvertierte den Zeitstempel mit der Datumsmethode durch Multiplikation mit 1000. und fügte dann alle Entitäten einzeln hinzu, wie (Jahr, Monate usw.)

hat den benutzerdefinierten Monatslistennamen erstellt und mit der getMonth()Methode zugeordnet, die den Index des Monats zurückgibt.

convertStampDate(unixtimestamp){

// Unixtimestamp

// Months array
var months_arr = ['January','February','March','April','May','June','July','August','September','October','November','December'];

// Convert timestamp to milliseconds
var date = new Date(unixtimestamp*1000);

// Year
var year = date.getFullYear();

// Month
var month = months_arr[date.getMonth()];

// Day
var day = date.getDate();

// Hours
var hours = date.getHours();

// Minutes
var minutes = "0" + date.getMinutes();

// Seconds
var seconds = "0" + date.getSeconds();

// Display date time in MM-dd-yyyy h:m:s format
var fulldate = month+' '+day+'-'+year+' '+hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);

// filtered fate
var convdataTime = month+' '+day;
return convdataTime;
}

Aufruf mit Stempelargument convertStampDate('1382086394000')

und das ist es.

Hidayt Rahman
quelle
0

Meine ES6-Variante erzeugt einen solchen String 2020-04-05_16:39:45.85725. Sie können die return-Anweisung jederzeit ändern, um das gewünschte Format zu erhalten:

const getDateStringServ = timestamp => {

  const plus0 = num => `0${num.toString()}`.slice(-2)

  const d = new Date(timestamp)

  const year = d.getFullYear()
  const monthTmp = d.getMonth() + 1
  const month = plus0(monthTmp)
  const date = plus0(d.getDate())
  const hour = plus0(d.getHours())
  const minute = plus0(d.getMinutes())
  const second = plus0(d.getSeconds())
  const rest = timestamp.toString().slice(-5)

  return `${year}-${month}-${date}_${hour}:${minute}:${second}.${rest}`
}
römisch
quelle
-1

Berechnung des Datums im Zeitstempel ab dem angegebenen Datum

// So erhalten Sie das Zeitstempeldatum vom normalen Datum : Im Format - 1560105000000

// Das Eingabedatum kann im Format "2019-06-09T18: 30: 00.000Z" vorliegen.

this.calculateDateInTimestamp = function (inputDate) {
    var date = new Date(inputDate);
    return date.getTime();
}

Ausgabe : 1560018600000

Athar
quelle