2010-10-29 21 views
64

In PHP, è possibile convertire facilmente una descrizione testuale in formato testo in inglese in una data corretta con strtotime().Javascript equivalente di strtotime di php()?

C'è qualcosa di simile in Javascript?

+0

Per l'analisi dal formato gg.mm.aaaa, controllare http://stackoverflow.com/questions/1576753/parse-datetime-string-in-javascript –

risposta

41

Ho trovato this article e ho provato il tutorial. In sostanza, è possibile utilizzare il costruttore data per analizzare una data, quindi scrivere ottenere i secondi dal getTime() metodo

var d=new Date("October 13, 1975 11:13:00"); 
document.write(d.getTime() + " milliseconds since 1970/01/01"); 

Fa questo lavoro?

+0

Sembra che io non funziona, la data è formattata in formato dmY. –

+22

-1. Questo copre solo le date formattate RFC 822 o ISO 8601, ma 'strtotime()' supporta molti altri formati. –

+1

Questo può accadere per soddisfare il caso d'uso dell'OP, ma è una risposta non valida tecnicamente errata alla domanda. Vedi (e per favore svia) risposta di Westy92. –

53

Sì, lo è. Ed è supportato in tutti i principali browser:

var ts = Date.parse("date string"); 

L'unica differenza è che questa funzione restituisce millisecondi al posto di secondi, quindi è necessario dividere il risultato per 1000.

Check what valid formats can JavaScript parse.

+1

Questa dovrebbe essere la risposta accettata. +1 – Doorknob

+18

No; questo funziona molto diversamente da php strtotime, nessuno degli esempi della documentazione php funziona, non uno solo 'strtotime (" now "); strtotime ("10 settembre 2000"); strtotime ("+ 1 giorno"); strtotime ("+ 1 settimana"); strtotime ("+ 1 settimana 2 giorni 4 ore 2 secondi"); strtotime ("giovedì prossimo"); strtotime ("ultimo lunedì"); ' –

+0

Grazie @Arnaldo. Questo sta funzionando per me. La tua risposta è più accettabile di "Djechelon's" – Adi

21

Partenza this implementazione di PHP strtotime() in JavaScript!

Ho scoperto che funziona in modo identico a PHP per tutto ciò che ho lanciato.

Aggiornamento: questa funzione come da versione 1.0.2 non è in grado di gestire questo caso: '2007:07:20 20:52:45' (Si noti il ​​separatore : per anno e mese)

Aggiornamento 2018:

Questo è ora disponibile come modulo npm! Semplicemente npm install locutus e quindi nell'origine:

var strtotime = require('locutus/php/datetime/strtotime'); 
+1

Normalmente non mi piacciono le risposte che sono solo link alle librerie, ma in questo caso dal momento che JavaScript non gestisce quasi pazzi i casi come strtotime quindi questa è una risposta fantastica. Grazie! – user819644

4

io geloso la strtotime() in PHP, ma faccio il mio in JavaScript utilizzando momento. Non così dolce come da php, ma lo fa anche bene.

// first day of the month 
var firstDayThisMonth = moment(firstDayThisMonth).startOf('month').toDate(); 

Andare avanti e indietro utilizzando il subtract() e add() con la endOf() e startOf():

// last day of previous month 
var yesterMonthLastDay = moment(yesterMonthLastDay).subtract(1,'months').endOf('month').toDate(); 
-2

Browser supportati per l'analisi di stringhe is inconsistent. Perché non esiste alcuna specifica su quali formati devono essere supportati, ciò che funziona in alcuni browser non funzionerà in altri browser.

Prova Moment.js - fornisce funzionalità di cross-browser per parsing dates:

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 
+0

Questo non risponde completamente alla domanda (e ha un punteggio negativo). C'è un modo per revocare la taglia? – Westy92

0

Ci sono pochi moduli che fornisce un comportamento simile, ma non esattamente come strtotime di PHP. Tra le poche alternative che ho trovato date-util produce i migliori risultati.

-1

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>

+0

* Avviso di deprecazione: il valore fornito non è in un formato ISO riconosciuto. la costruzione del momento ritorna a js 'Date()' * - sooo ... uguale a 'new Date (strdate)' really ... – deceze