Hvordan får jeg den nåværende datoen i JavaScript?
Hvordan får jeg den nåværende datoen i JavaScript?
Svar #1
Bruk new Date() for å generere et nytt Date-objekt som inneholder den gjeldende datoen og tiden.
var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();
today = mm + '/' + dd + '/' + yyyy;
document.write(today);Dette vil gi deg dagens dato i formatet mm/dd/yyyy.
Endre enkelt today=mm + '/' + dd + '/' + yyyy; til hvilket som helst format du ønsker.
Svar #2
var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);Bruk replace-alternativet hvis du skal gjenbruke utc-variabelen, for eksempel new Date(utc), siden Firefox og Safari ikke gjenkjenner en dato med bindestreker.
Svar #3
Den korteste mulige.
For å få format som "2018-08-03":
let today = new Date().toISOString().slice(0, 10)
console.log(today)For å få format som "8/3/2018":
let today = new Date().toLocaleDateString()
console.log(today)Du kan også sende locale som argument, for eksempel toLocaleDateString("sr"), osv.
Svar #4
OPPDATERT!, Bla ned
Hvis du vil ha noe enkelt og pent for sluttbrukeren ... Også, fikset et lite suffiksproblem i den første versjonen nedenfor. Returnerer nå riktig suffiks.
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 OPPDATERING Etter mye utsettelse, har jeg endelig GitHubbet og oppdatert dette med den endelige løsningen jeg har brukt selv. Den har til og med hatt noen siste-liten-redigeringer for å gjøre det bedre! Hvis du ser etter den gamle jsFiddle, vennligst se dette.
Denne oppdateringen kommer i 2 varianter, fortsatt relativt liten, men ikke så liten som mitt ovenfor, originale svar. Hvis du vil ha ekstremt liten, gå for det.
Merk også: Dette er fortsatt mindre oppblåst enn moment.js. Selv om moment.js er fint, mener jeg det har for mange sekulære metoder, som krever at man lærer moment som om det var et språk. Min her bruker samme vanlige format som PHP: date.
Hurtiglenker
- Date.format.min.js 5,08 KB
- dateFormat.min.js 4,16 KB
Smak 1
new Date().format(String)Min personlige favoritt. Jeg vet at det er tabu, men det fungerer veldig bra på Date-objektet. Vær bare oppmerksom på eventuelle andre modifikasjoner du måtte ha på Date-objektet.
// use as simple as
new Date().format('m-d-Y h:i:s'); // 07-06-2016 06:38:34
Smak 2
dateFormat(Date, String)Mer tradisjonell alt-i-ett-metode. Har all funksjonalitet fra den forrige, men kalles via metoden med Date-parameter.
// use as simple as
dateFormat(new Date(), 'm-d-Y h:i:s'); // 07-06-2016 06:38:34
BONUS Smak (krever jQuery)
$.date(Dato, Streng)Dette inneholder mye mer enn bare et enkeltformat-alternativ. Det utvider basis-Dato-objektet og inkluderer metoder somaddDays. For mer informasjon, vennligst se Git.
I denne modden er formattegnene inspirert av PHP: date. For en komplett liste, vennligst se min README
Denne modden har også en mye lengre liste over ferdiglagde formater. For å bruke et ferdiglaget format, skriv ganske enkelt inn dens nøkkelnavn. dateFormat(new Date(), 'pretty-a');
'sammensatt'
- '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' == 'Y-m-d h:i:s'
- 'postgreSQL' == 'Y.z'
- 'postgreSQL2' == 'Yz'
- 'soap' == 'Y-m-d\\TH:i:s.u'
- 'soap2' == 'Y-m-d\\TH:i:s.uP'
- 'unixTimestamp' == '@U'
- 'xmlrpc' == 'Ymd\\TG:i:s'
- 'xmlrpcCompact' == 'Ymd\tGis'
- 'wddx' == 'Y-n-j\\TG:i:s'
'konstanter'
- 'AMERICAN' == 'F j Y'
«pen»
- 'pretty-a' == 'g:i.sA l jS \\o\\f F Y'
Som du kanskje legger merke til, kan du bruke dobbel \ for å unnslippe et tegn.
Svar #5
Hvis du bare vil ha en dato uten tidsinformasjon, bruk:
var today = new Date();
today.setHours(0, 0, 0, 0);
document.write(today);Svar #6
Prøv dette:
var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.write("<b>" + day + "/" + month + "/" + year + "</b>")Resultatet vil bli som
15/2/2012
Svar #7
Hvis du leter etter mye mer detaljert kontroll over datoformater, anbefaler jeg på det sterkeste å sjekke ut momentjs. Fantastisk bibliotek - og bare 5KB. http://momentjs.com/
Svar #8
var date = new Date().toLocaleDateString("en-US");
Du kan også kalle metoden toLocaleDateString med to parametere:
var date = new Date().toLocaleDateString("en-US", {
"year": "numeric",
"month": "numeric"
});
Mer om denne metoden på MDN.
Svar #9
Du kan bruke 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>Svar #10
var d = (new Date()).toString().split(' ').splice(1,3).join(' ');
document.write(d)For å bryte det ned i trinn:
(new Date()).toString()gir "Fre 28. jun. 2013 15:30:18 GMT-0700 (PDT)"(new Date()).toString().split(' ')deler den ovennevnte strengen ved hvert mellomrom og returnerer et array som følger: ["Fre", "Jun", "28", "2013", "15:31:14", "GMT-0700", "(PDT)"](new Date()).toString().split(' ').splice(1,3).join(' ')tar den andre, tredje og fjerde verdien fra arrayen ovenfor, slår dem sammen med mellomrom, og returnerer en streng "Jun 28 2013"
Svar #11
De fleste av de andre svarene gir datoen med klokkeslett.
Hvis du bare trenger datoen.
new Date().toISOString().split("T")[0]
Utdata
[ '2021-02-08', '06:07:44.629Z' ]
Hvis du vil ha det i /-format, bruk replaceAll.
new Date().toISOString().split("T")[0].replaceAll("-", "/")
Hvis du vil ha andre formater, er det best å bruke momentjs.
Svar #12
Dette fungerer hver gang:
var now = new Date();
var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);
var today = now.getFullYear() + "-" + (month) + "-" + (day);
console.log(today);Svar #13
Renere, enklere versjon:
new Date().toLocaleString();
Resultat varierer i henhold til brukerens lokale:
27.02.2017, 09:15:41
Svar #14
Hvis du er fornøyd med YYYY-MM-DD-formatet, vil dette også gjøre jobben.
new Date().toISOString().split('T')[0]2018-03-10Svar #15
Du kan bruke Date.js-biblioteket som utvider Date-objektet, dermed kan du ha .today()-metoden.
Svar #16
Ved å bruke JavaScript innebygde Date.prototype.toLocaleDateString() (flere alternativer finnes i MDN-dokumentasjonen):
const options = {
month: '2-digit',
day: '2-digit',
year: 'numeric',
};
console.log(new Date().toLocaleDateString('en-US', options)); // mm/dd/yyyyVi kan få lignende oppførsel ved å bruke Intl.DateTimeFormat som har anstendig nettleserstøtte. På samme måte som toLocaleDateString(), kan vi sende inn et objekt med alternativer:
const date = new Date('Dec 2, 2021') // Thu Dec 16 2021 15:49:39 GMT-0600
const options = {
day: '2-digit',
month: '2-digit',
year: 'numeric',
}
new Intl.DateTimeFormat('en-US', options).format(date) // '12/02/2021'
Svar #17
Du kan få den nåværende datoen ved å kalle den statiske metoden now slik:
var now = Date.now()
referanse:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/now
Svar #18
Varuns svar tar ikke hensyn til tidsoneforskyvning. Her er en versjon som gjør det:
var d = new Date()
new Date(d.getTime() - d.getTimezoneOffset() * 60000).toJSON().slice(0, 10) // 2015-08-11
TimezoneOffset er i minutter, mens Date-konstruktøren tar millisekunder, derfor multiplikasjonen med 60000.
Svar #19
Siden toISOString() kun vil returnere nåværende UTC-tid, ikke lokal tid. Vi må lage en dato ved å bruke '.toString()'-funksjonen for å få dato i yyyy-MM-dd-format som
document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('T')[0]);For å få dato og tid i yyyy-MM-ddTHH:mm:ss format
document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0]);For å få dato og tid i yyyy-MM-dd HH:mm:ss-format
document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0].replace('T',' '));Svar #20
Det korteste svaret er: new Date().toJSON().slice(0,10)
Svar #21
new Date().toDateString();
Resultat :
"Ons Feb 03 2016"
Svar #22
new Date().toISOString().slice(0,10);
ville også fungere
Svar #23
Hvis du vil ha et enkelt DD/MM/YYYY-format, har jeg nettopp kommet opp med denne enkle løsningen, selv om den ikke legger til manglende nuller foran.
var d = new Date();
document.write( [d.getDate(), d.getMonth()+1, d.getFullYear()].join('/') );Svar #24
Prøv
`${Date()}`.slice(4,15)
console.log( `${Date()}`.slice(4,15) )Vi bruker her standard JS-funksjonaliteter: template literals, Date-objektet som blir konvertert til streng, og slice. Dette er sannsynligvis den korteste løsningen som oppfyller OPs krav (ingen tid, bare dato)
Svar #25
Dette er bra for å få en formatert dato
let date = new Date().toLocaleDateString("en", {year:"numeric", day:"2-digit", month:"2-digit"});
console.log(date);Svar #26
SISTE OPPDATERING: 23.08.19 date-fns-biblioteket fungerer på samme måte som moment.js, men har et mye mindre fotavtrykk. Det lar deg plukke hvilke funksjoner du vil inkludere i prosjektet ditt, så du trenger ikke å kompilere hele biblioteket for å formatere dagens dato. Hvis et minimalt tredjepartsbibliotek ikke er et alternativ for prosjektet ditt, støtter jeg den aksepterte løsningen av Samuel Meddows øverst.
Bevarer historien nedenfor fordi den hjalp noen få mennesker. Men for ordens skyld er det ganske klønete og kan slutte å fungere uten forvarsel, som de fleste av løsningene på dette innlegget
REDIGER 2.7.2017 En énlins JS-løsning:
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 nyeste, & chrome returnerertodaysDate="2/7/2017"
"fungerer"* i IE10+
Forklaring
Jeg fant ut at IE10 og IE Edge gjør ting litt annerledes.. hvem skulle trodd. med new Date(Date.now()).toLocaleString() som input,
IE10 returnerer:
"Tuesday, February 07, 2017 2:58:25 PM"
Jeg kunne skrevet en stor lang funksjon og FTFY. Men du burde virkelig bruke moment.js for dette. Skriptet mitt renser bare dette opp og gir deg den utvidede tradisjonelle amerikanske notasjonen: > todaysDate="06. mars 2017"
IE EDGE returnerer:
"2/7/2017 2:59:27 PM"
Selvfølgelig kunne det ikke være så enkelt. Edges datostreng har usynlige «•»-tegn mellom hvert synlige tegn. Så nå skal vi ikke bare sjekke om det første tegnet er et tall, men de første 3 tegnene, siden det viser seg at ethvert enkelt tegn i hele datoområdet til slutt vil være en prikk eller en skråstrek på et tidspunkt. For å holde ting enkelt, kan du bare .slice() de første tre tegnene (liten buffer mot fremtidige problemer) og deretter sjekke for tall. Det bør sannsynligvis bemerkes at disse usynlige prikkene potensielt kan vedvare i koden din. Jeg ville kanskje undersøkt det nærmere hvis du har større planer enn bare å skrive ut denne strengen i visningen din.
∴ oppdatert en-liners:
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];
Det er kjipt å lese. Hva med:
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];
ORIGINALT SVAR
Jeg har en en-liner til deg:
new Date(Date.now()).toLocaleString().split(', ')[0];
og [1] vil gi deg tidspunktet på dagen.
Svar #27
En enkel måte å få til dette på (samtidig som du tar hensyn til din nåværende tidssone og utnytter ISO-formatet yyyy-mm-dd) er:
let d = new Date().toISOString().substring(0,19).replace("T"," ") // "2020-02-18 16:41:58"
Vanligvis er dette et ganske allsidig kompatibelt datoformat, og du kan konvertere det til ren datoverdi om nødvendig:
Date.parse(d); // 1582044297000
