Voglio convertire la data in data e ora, il mio input è 26-02-2012
. Ho usatoconvertire la data in data e ora in javascript?
new Date(myDate).getTime();
Si dice NaN .. Qualcuno può dire come convertire questo?
Voglio convertire la data in data e ora, il mio input è 26-02-2012
. Ho usatoconvertire la data in data e ora in javascript?
new Date(myDate).getTime();
Si dice NaN .. Qualcuno può dire come convertire questo?
var myDate="26-02-2012";
myDate=myDate.split("-");
var newDate=myDate[1]+","+myDate[0]+","+myDate[2];
alert(new Date(newDate).getTime()); //will alert 1330192800000
Aggiornamento:
var myDate="26-02-2012";
myDate=myDate.split("-");
var newDate=myDate[1]+"/"+myDate[0]+"/"+myDate[2];
alert(new Date(newDate).getTime()); //will alert 1330210800000
DEMO (Testato in Chrome, FF, Opera, Internet Explorer e Safari).
Sfortunatamente, questo non funziona in Safari5, poiché restituisce 'NaN'. In Safari devi usare l'altra possibile 'nuova data costruttore (anno, mese, giorno);', riguardo a questo esempio: 'nuova Data (myDate [2], myDate [1], myDate [0]);' – insertusernamehere
Check l'aggiornamento. –
Invece di convertire la stringa della data da "Europeo" a "Americano", è meglio convertirlo in formato ISO 8601 ('AAAA-MM-GG'), che è garantito che sia compreso da' Date() ', e è, in generale, il formato più interoperabile per le stringhe di data. –
La stringa non è in un formato che l'oggetto Date
è specified to handle. Dovrai analizzarlo da solo, usare una libreria di analisi della data come MomentJS o la più vecchia (e attualmente non mantenuta, per quanto posso dire) DateJS, o massaggiarla nel formato corretto (ad esempio, 2012-02-29
) prima di chiedere Date
a analizzalo
Perché stai ricevendo NaN
: Quando si chiede new Date(...)
per gestire una stringa non valida, esso restituisce un oggetto Date
che è impostato per una data non valida (new Date("29-02-2012").toString()
rendimenti "Invalid date"
). Chiamando getTime()
su un oggetto data in questo stato restituisce NaN
.
Un altro per UTC: http://arshaw.com/xdate/ – benvds
@benvds: Cool, grazie. Anche se trovo il commento * "Inoltre, non è distruttivo per il DOM" * un po 'strano ... Mi aspetto che volessero dire che non cambia l'oggetto 'Date' (che non ha nulla a che fare con il DOM). –
è necessario solo per invertire la data di cifre e cambiare -
con ,
:
new Date(2012,01,26).getTime(); // 02 becomes 01 because getMonth() method returns the month (from 0 to 11)
Nel tuo caso:
var myDate="26-02-2012";
myDate=myDate.split("-");
new Date(parseInt(myDate[2], 10), parseInt(myDate[1], 10) - 1 , parseInt(myDate[0]), 10).getTime();
P.S. Le impostazioni locali del Regno Unito non contano qui.
Anche questo formato di data non è valido e non funzionerà in modo affidabile tra browser e impostazioni internazionali (ad esempio, non è disponibile per me in Chrome con le impostazioni locali del Regno Unito). Se hai intenzione di suggerire un formato, proponi uno che sia effettivamente documentato per funzionare. –
Prendo l'esempio da https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date. Ho appena dimenticato di mettere via la corda. Ora funziona. – antonjs
Ok, almeno ora il codice sopra non sta usando un formato di data non valido - sta solo dando la data sbagliata, per due ragioni separate. Sopra hai definito la data 2 marzo 2014 (hai l'ordine sul campo incasinato). E se i campi fossero nel giusto ordine, dovresti definire la data ** Marzo ** 26th, 2012 (i valori del mese iniziano da zero). Ma poiché l'OP ha una stringa, non una serie di numeri, non è tutto ciò che è utile anche se hai affrontato questi problemi. –
var dtstr = "26-02-2012";
new Date(dtstr.split("-").reverse().join("-")).getTime();
function getTimeStamp() {
var now = new Date();
return ((now.getMonth() + 1) + '/' + (now.getDate()) + '/' + now.getFullYear() + " " + now.getHours() + ':'
+ ((now.getMinutes() < 10) ? ("0" + now.getMinutes()) : (now.getMinutes())) + ':' + ((now.getSeconds() < 10) ? ("0" + now
.getSeconds()) : (now.getSeconds())));
}
lunga ma ottima risposta operativa –
Provate questa funzione, si utilizza il metodo Date.parse() e non richiede alcuna logica personalizzata:
function toTimestamp(strDate){
var datum = Date.parse(strDate);
return datum/1000;
}
alert(toTimestamp('02/13/2009 23:31:30'));
Questa è di gran lunga la migliore risposta, grazie! – gyo
/**
* Date to timestamp
* @param string template
* @param string date
* @return string
* @example datetotime("d-m-Y", "26-02-2012") return 1330207200000
*/
function datetotime(template, date){
date = date.split(template[1]);
template = template.split(template[1]);
date = date[ template.indexOf('m') ]
+ "/" + date[ template.indexOf('d') ]
+ "/" + date[ template.indexOf('Y') ];
return (new Date(date).getTime());
}
Bel lavoro, @Evgeniy! Grazie per la condivisione! – Ricalsin
questo codice refactoring lo farà
let toTimestamp = strDate => Date.parse(strDate)
funziona su tutti i browser moderni ad eccezione di ie8 -
Questa è la vera risposta. Il resto è uno scherzo. – Moss
possibile duplicato di http://stackoverflow.com/questions/9343971/timestamp-conversion-javascript –
si consiglia di dare un'occhiata alla libreria date.js: http://www.datejs.com/ – rsbarro
Hai usato 'Date (myDate) .getTime()' (cosa hai marcato come codice), o la parola "new" prima voleva dire far parte del codice? Maggiore è il tuo impegno, migliori saranno le risposte che otterrai. –