data - sommare ore javascript




Come ottengo la data corrente in JavaScript? (20)

AGGIORNATO! , Scorrere verso il basso

Se vuoi qualcosa di semplice carina all'utente finale ... Also, fixed a small suffix issue in the first version below. Now properly returns suffix. Also, fixed a small suffix issue in the first version below. Now properly returns suffix.

var objToday = new Date(),
	weekday = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'),
	dayOfWeek = weekday[objToday.getDay()],
	domEnder = function() { var a = objToday; if (/1/.test(parseInt((a + "").charAt(0)))) return "th"; a = parseInt((a + "").charAt(1)); return 1 == a ? "st" : 2 == a ? "nd" : 3 == a ? "rd" : "th" }(),
	dayOfMonth = today + ( objToday.getDate() < 10) ? '0' + objToday.getDate() + domEnder : objToday.getDate() + domEnder,
	months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'),
	curMonth = months[objToday.getMonth()],
	curYear = objToday.getFullYear(),
	curHour = objToday.getHours() > 12 ? objToday.getHours() - 12 : (objToday.getHours() < 10 ? "0" + objToday.getHours() : objToday.getHours()),
	curMinute = objToday.getMinutes() < 10 ? "0" + objToday.getMinutes() : objToday.getMinutes(),
	curSeconds = objToday.getSeconds() < 10 ? "0" + objToday.getSeconds() : objToday.getSeconds(),
	curMeridiem = objToday.getHours() > 12 ? "PM" : "AM";
var today = curHour + ":" + curMinute + "." + curSeconds + curMeridiem + " " + dayOfWeek + " " + dayOfMonth + " of " + curMonth + ", " + curYear;

document.getElementsByTagName('h1')[0].textContent = today;
<h1></h1>

UBBER UPDATE Dopo tanto procrastinare, ho finalmente GitHubbed e l'ho aggiornato con la soluzione finale che ho usato per me stesso. Ha persino avuto alcune modifiche dell'ultimo minuto per renderlo più dolce! Se stai cercando il vecchio jsFiddle, per favore guarda questo .

Questo aggiornamento è disponibile in 2 versioni, ancora relativamente piccole, sebbene non piccole come la mia risposta originale precedente. Se vuoi estremamente piccolo, vai con quello.
Nota anche: questo è ancora meno gonfio di moment.js. Mentre moment.js è bello, imo, ha molti metodi secolari, che richiedono un momento di apprendimento come se fosse una lingua. Il mio qui usa lo stesso formato comune di PHP:date .

Link veloci

Flavor 1 new Date().format(String) My Personal Fav. Conosco il tabù, ma funziona alla grande sull'oggetto Date. Basta essere a conoscenza di qualsiasi altra mod che potresti avere per l'oggetto Date.

//  use as simple as
new Date().format('m-d-Y h:i:s');   //  07-06-2016 06:38:34

Flavor 2 dateFormat(Date, String) Metodo all-in-one più tradizionale. Ha tutte le capacità del precedente, ma è chiamato tramite il metodo con Date param.

//  use as simple as
dateFormat(new Date(), 'm-d-Y h:i:s');  //  07-06-2016 06:38:34

BONUS Flavor (richiede jQuery) $.date(Date, String) Questo contiene molto più di una semplice opzione di format . Estende l'oggetto Date di base e include metodi come addDays . Per ulteriori informazioni, si prega di consultare il Git .

In questa mod, i caratteri di formato sono ispirati a PHP:date . Per un elenco completo, consultare il mio README

Questa mod ha anche una lista molto più lunga di formati pre-fatti. Per usare un formato premade, è sufficiente inserire il nome della chiave. dateFormat(new Date(), 'pretty-a');

  • 'composto'
    • 'commonLogFormat' == 'd / M / Y: G: i: s'
    • 'exif' == 'Y: m: d G: i: s'
    • 'isoYearWeek' == 'Y \\ WW'
    • 'isoYearWeek2' == 'Y - \\ WW'
    • 'isoYearWeekDay' == 'Y \\ WWj'
    • 'isoYearWeekDay2' == 'Y - \\ WW-j'
    • 'mySQL' == 'Ymd h: i: s'
    • 'postgreSQL' == 'Y.z'
    • 'postgreSQL2' == 'Yz'
    • 'soap' == 'Ymd \\ TH: i: s.u'
    • 'soap2' == 'Ymd \\ TH: i: s.uP'
    • 'unixTimestamp' == '@U'
    • 'xmlrpc' == 'Ymd \\ TG: i: s'
    • 'xmlrpcCompact' == 'Ymd \\ tGis'
    • 'wddx' == 'Ynj \\ TG: i: s'
  • 'costanti'
    • 'AMERICAN' == 'F j Y'
    • 'AMERICANSHORT' == 'm / d / Y'
    • 'AMERICANSHORTWTIME' == 'm / d / Y h: i: sA'
    • 'ATOM' == 'Ymd \\ TH: i: sP'
    • 'COOKIE' == 'l dMY H: i: s T'
    • 'EUROPEAN' == 'j F Y'
    • 'EUROPEANSHORT' == 'dmY'
    • 'EUROPEANSHORTWTIME' == 'dmY H: i: s'
    • 'ISO8601' == 'Ymd \\ TH: i: sO'
    • 'LEGAL' == 'j F Y'
    • 'RFC822' == 'D d M y H: i: s O'
    • 'RFC850' == 'l dMy H: i: s T'
    • 'RFC1036' == 'D d M y H: i: s O'
    • 'RFC1123' == 'D d MYH: i: s O'
    • 'RFC2822' == 'D d MYH: i: s O'
    • 'RFC3339' == 'Ymd \\ TH: i: sP'
    • 'RSS' == 'D d MYH: i: s O'
    • 'W3C' == 'Ymd \\ TH: i: sP'
  • 'bella'
    • 'pretty-a' == 'g: i.sA l jS \\ o \\ f F Y'
    • 'pretty-b' == 'g: iA l jS \\ o \\ f F Y'
    • 'pretty-c' == 'n / d / Y g: iA'
    • 'pretty-d' == 'n / d / Y'
    • 'pretty-e' == 'F jS - g: ia'
    • 'pretty-f' == 'g: iA'

Come puoi notare, puoi usare double \ per sfuggire a un personaggio.

Come ottengo la data corrente in JavaScript?



La risposta più breve è: new Date().toJSON().slice(0,10)


Non so se aiuterà qualcuno, ma sto usando questo per ottenere l'oggetto Date di oggi.

new Date( 3600000*Math.floor(Date.now()/3600000) )

Più pulito, versione più semplice:

new Date().toLocaleString();

Il risultato varia in base alle impostazioni locali dell'utente:

27/2/2017, 9:15:41


Poiché toISOString() restituirà solo l'ora UTC corrente, non l'ora locale. Dobbiamo creare una data usando la funzione '.toString ()' per ottenere la data nel formato yyyy-MM-dd come

document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('T')[0]);

Per ottenere data e ora nel formato yyyy-MM-ddTHH:mm:ss

document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0]);

Per ottenere data e ora nel formato yyyy-MM-dd HH:mm:ss

document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0].replace('T',' '));


Puoi controllare questo

var today = new Date();
today = parseInt(today.getMonth()+1)+'/'+today.getDate()+'/'+today.getFullYear()+"\nTime : "+today.getHours()+":"+today.getMinutes()+":"+today.getSeconds();
document.write(today);

E vedi la documentazione per il costruttore Date (). link


Puoi usare la libreria Date.js che estende l'oggetto Date, quindi puoi avere il metodo .today ().


Puoi utilizzare moment.js: http://momentjs.com/

var m = moment().format("DD/MM/YYYY");

document.write(m);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>


Qual è il grosso problema con questo .. Il modo più pulito per farlo è

var currentDate=new Date().toLocaleString().slice(0,10);


Se sei soddisfatto del formato YYYY-MM-DD, anche questo farà il lavoro.

new Date().toISOString().split('T')[0]

2018-03-10


Se si desidera un semplice formato DD/MM/YYYY , ho appena trovato questa soluzione semplice, sebbene non prefissi gli zeri mancanti.

var d = new Date();
document.write( [d.getDate(), d.getMonth()+1, d.getFullYear()].join('/') );


Se stai usando jQuery. Prova questa fodera:

$.datepicker.formatDate('dd/mm/yy', new Date());

Ecco la convenzione per la formattazione della data

  • d - giorno del mese (senza zero iniziale)
  • dd - giorno del mese (due cifre)
  • o - giorno dell'anno (senza zeri iniziali)
  • oo - giorno dell'anno (tre cifre)
  • D - nome del giorno breve
  • DD - nome del giorno lungo
  • m - mese dell'anno (no zero iniziale)
  • mm - mese dell'anno (due cifre)
  • M - nome del mese breve
  • MM - nome del mese lungo
  • anno y (due cifre)
  • yy - anno (quattro cifre)

Ecco il riferimento per jQuery datepicker


Se vuoi solo una data senza informazioni sull'ora, usa:

var today = new Date();
    today.setHours(0, 0, 0, 0);

document.write(today);


Il più breve possibile

Per ottenere il formato come "2018-08-03":

let today = new Date().toISOString().slice(0, 10)

console.log(today)

Per ottenere il formato come "8/3/2018":

let today = new Date().toLocaleDateString()

console.log(today)

Inoltre, puoi passare la locale come argomento, ad esempio toLocaleDateString("sr") , ecc.


Una soluzione JS a una sola riga:

tl; dr

var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];

edge, ff latest, & chrome return todaysDate = "2/7/2017"
"funziona" * in IE10 +

EDIT 2/7/2017

Ho scoperto che IE10 e IE Edge fanno le cose in modo un po 'diverso .. vai a capire. con new Date(Date.now()).toLocaleString() come input,

IE10 restituisce:

"Tuesday, February 07, 2017 2:58:25 PM"

Potrei scrivere una grande funzione lunga e FTFY. Ma dovresti usare moment.js per questa roba. La mia sceneggiatura si limita a ripulire tutto ciò e ti offre la notazione tradizionale espansa degli Stati Uniti: > todaysDate = "March 06, 2017"

IE EDGE restituisce:

"‎2‎/‎7‎/‎2017‎ ‎2‎:‎59‎:‎27‎ ‎PM"

Certo che non potrebbe essere così facile. La stringa di data di Edge ha caratteri "•" invisibili tra ogni simbolo visibile. Quindi non solo ora verificheremo se il primo carattere è un numero, ma i primi 3 caratteri, dal momento che risulta che ogni singolo carattere nell'intero intervallo di date alla fine sarà un punto o una barra ad un certo punto. Quindi, per mantenere le cose semplici, basta .slice() i primi tre caratteri (un piccolo buffer contro futuri shenanigans) e quindi controllare i numeri. Si dovrebbe probabilmente notare che questi punti invisibili potrebbero potenzialmente persistere nel codice. Potrei scavare in questo se hai piani più grandi di solo stampare questa stringa per la tua vista.

One aggiornato one-liner:

var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];

Questo fa schifo a leggere. Che ne dite di:

var dateString = new Date(Date.now()).toLocaleString();
var todaysDate = dateString.slice(0,3).match(/[0-9]/i) ? dateString.split(' ')[0].split(',')[0] : dateString.split(' ')[1] + " " + dateString.split(' ')[2] + " " + dateString.split(' ')[3];

RISPOSTA ORIGINALE

Ho una sola linea per te:

new Date(Date.now()).toLocaleString().split(', ')[0];

e [1] ti darà l'ora del giorno.


var d = (new Date()).toString().split(' ').splice(1,3).join(' ');

document.write(d)

Per scomporlo in passaggi:

  1. (new Date()).toString() restituisce "ven 28 giu 2013 15:30:18 GMT-0700 (PDT)"

  2. (new Date()).toString().split(' ') divide la stringa sopra in ogni spazio e restituisce una matrice come segue: ["Fri", "Jun", "28", "2013", "15: 31:14 "," GMT-0700 "," (PDT) "]

  3. (new Date()).toString().split(' ').splice(1,3).join(' ') prende il secondo, il terzo e il quarto valore dall'array sopra, li unisce con spazi e restituisce un stringa "28 giu 2013"


var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);

Usa l'opzione di replace se hai intenzione di riutilizzare la variabile utc , come new Date(utc) , dato che Firefox e Safari non riconoscono una data con trattini.


new Date().toISOString().slice(0,10); 

funzionerebbe anche


var date = new Date().toLocaleDateString("en-US");

Inoltre, puoi chiamare il metodo toLocaleDateString con due parametri:

var date = new Date().toLocaleDateString("en-US", {
    "year": "numeric",
    "month": "numeric"
});

Articolo su MSDN . Ulteriori informazioni su questo metodo su MDN .







date