In PHP können Sie eine englische Text-Datums- / Uhrzeitbeschreibung einfach in ein korrektes Datum mit konvertieren strtotime()
.
Gibt es etwas Ähnliches in Javascript?
Antworten:
Ich habe diesen Artikel gefunden und das Tutorial ausprobiert. Grundsätzlich können Sie den Datumskonstruktor verwenden, um ein Datum zu analysieren, und dann schreiben, um die Sekunden aus der getTime()
Methode abzurufen
var d=new Date("October 13, 1975 11:13:00");
document.write(d.getTime() + " milliseconds since 1970/01/01");
Funktioniert das?
strtotime()
unterstützt jedoch viele andere Formate.
Ja ist es. Und es wird in allen gängigen Browsern unterstützt:
var ts = Date.parse("date string");
Der einzige Unterschied besteht darin, dass diese Funktion Millisekunden anstelle von Sekunden zurückgibt. Sie müssen das Ergebnis also durch 1000 teilen.
Überprüfen Sie, welche gültigen Formate JavaScript analysieren kann.
strtotime("now"); strtotime("10 September 2000"); strtotime("+1 day"); strtotime("+1 week"); strtotime("+1 week 2 days 4 hours 2 seconds"); strtotime("next Thursday"); strtotime("last Monday");
Schauen Sie sich diese Implementierung von PHPs strtotime () in JavaScript an!
Ich fand, dass es für alles, was ich darauf warf, identisch mit PHP funktioniert.
Update: Diese Funktion gemäß Version 1.0.2 kann diesen Fall nicht behandeln:
'2007:07:20 20:52:45'
(Beachten Sie das:
Trennzeichen für Jahr und Monat)
Dies ist jetzt als npm
Modul verfügbar ! Einfach npm install locutus
und dann in Ihrer Quelle:
var strtotime = require('locutus/php/datetime/strtotime');
Ich bin neidisch auf die strtotime () in PHP, aber ich mache meine in Javascript mit Moment. Nicht so süß wie das von PHP, aber macht den Trick auch ordentlich.
// first day of the month
var firstDayThisMonth = moment(firstDayThisMonth).startOf('month').toDate();
Gehen Sie mit dem subtract()
und add()
mit dem endOf()
und hin und her startOf()
:
// last day of previous month
var yesterMonthLastDay = moment(yesterMonthLastDay).subtract(1,'months').endOf('month').toDate();
Die Browserunterstützung für das Parsen von Zeichenfolgen ist inkonsistent . Da es keine Spezifikation gibt, welche Formate unterstützt werden sollen, funktioniert das, was in einigen Browsern funktioniert, in anderen Browsern nicht.
Probieren Sie Moment.js aus - es bietet browserübergreifende Funktionen zum Parsen von Daten :
var timestamp = moment("2013-02-08 09:30:26.123");
console.log(timestamp.milliseconds()); // return timestamp in milliseconds
console.log(timestamp.second()); // return timestamp in seconds
var strdate = new Date('Tue Feb 07 2017 12:51:48 GMT+0200 (Türkiye Standart Saati)');
var date = moment(strdate).format('DD.MM.YYYY');
$("#result").text(date); //07.02.2017
<script src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.js"></script>
<div id="result"></div>
Date()
- sooo… genau wie new Date(strdate)
wirklich…
Vielleicht können Sie eine Beispielfunktion nutzen wie:
function strtotime(date, addTime){
let generatedTime=date.getTime();
if(addTime.seconds) generatedTime+=1000*addTime.seconds; //check for additional seconds
if(addTime.minutes) generatedTime+=1000*60*addTime.minutes;//check for additional minutes
if(addTime.hours) generatedTime+=1000*60*60*addTime.hours;//check for additional hours
return new Date(generatedTime);
}
let futureDate = strtotime(new Date(), {
hours: 1, //Adding one hour
minutes: 45 //Adding fourty five minutes
});
document.body.innerHTML = futureDate;
`