Hoe krijg ik de huidige datum in JavaScript?

Hoe krijg ik de huidige datum in JavaScript?


Antwoord 1, autoriteit 100%

Gebruik new Date() om een ​​nieuw Date-object te genereren dat de huidige datum en tijd bevat.

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);

Antwoord 2, autoriteit 16%

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

Antwoord 3, autoriteit 10%

De kortst mogelijke.

Om een ​​indeling te krijgen zoals “2018-08-03”:

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

Antwoord 4, autoriteit 8%

GE-UPDATE!, scroll naar beneden

Als je iets simpels moois wilt voor de eindgebruiker … 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>

Antwoord 5, autoriteit 6%

Als je gewoon een date wilt zonder tijdsinfo, gebruik dan:

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

Antwoord 6, autoriteit 4%

Probeer dit:

var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.write("<b>" + day + "/" + month + "/" + year + "</b>")

Antwoord 7, autoriteit 2%

Als je op zoek bent naar meer gedetailleerde controle over de datumnotaties, raad ik je ten zeerste aan om momentjs te bekijken. Geweldige bibliotheek – en slechts 5 KB.
http://momentjs.com/


Antwoord 8, autoriteit 2%

Je kunt moment.js gebruiken: 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>

Antwoord 9, autoriteit 2%

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

Antwoord 10, autoriteit 2%

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

U kunt ook methode toLocaleDateString aanroepen met twee parameters:

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

Artikel over MSDN. Meer over deze methode op MDN.


Antwoord 11, autoriteit 2%

Dit werkt elke keer:

    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);

Antwoord 12

Schonere, eenvoudigere versie:

new Date().toLocaleString();

Resultaat varieert afhankelijk van de landinstelling van de gebruiker:

27-2-2017, 9:15:41


Antwoord 13

Als u tevreden bent met de indeling JJJJ-MM-DD, is dit ook voldoende.

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

2018-03-10


Antwoord 14

U kunt de bibliotheek Date.js gebruiken die het object Date uitbreidt, dus u kunt de methode .today() gebruiken .


Antwoord 15

De meeste andere antwoorden geven de datum en tijd aan.
Als je alleen een date nodig hebt.

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

Uitvoer

[ '2021-02-08', '06:07:44.629Z' ]

Als je het in de indeling / wilt, gebruik dan replaceAll.

new Date().toISOString().split("T")[0].replaceAll("-", "/")

Als u andere formaten wilt, kunt u het beste momentjs gebruiken.


Antwoord 16

Je kunt de huidige datum nu als volgt oproepen met de statische methode:

var now = Date.now()

referentie:

https://developer.mozilla.org/en/docs/Web /JavaScript/Referentie/Global_Objects/Datum/nu


Antwoord 17

Varuns antwoord houdt geen rekening met TimezoneOffset. Hier is een versie die dat wel doet:

var d = new Date()
new Date(d.getTime() - d.getTimezoneOffset() * 60000).toJSON().slice(0, 10) // 2015-08-11

De TimezoneOffset is minuten, terwijl de datumconstructor milliseconden duurt, dus de vermenigvuldiging met 60000.


Antwoord 18

Het kortste antwoord is: new Date().toJSON().slice(0,10)


Antwoord 19

As toISOString() retourneert alleen de huidige UTC-tijd, niet de lokale tijd. We moeten een datum maken door de functie ‘.toString()’ te gebruiken om de datum in het yyyy-MM-dd formaat te krijgen, zoals

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

Antwoord 20

new Date().toDateString();

Resultaat:

“Woe Feb 03 2016”


Antwoord 21

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

zou ook werken


Antwoord 22

Als je een eenvoudige DD/MM/YYYY-indeling wilt, heb ik zojuist deze eenvoudige oplossing bedacht, hoewel er geen ontbrekende nullen worden toegevoegd.

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

Antwoord 23

LAATSTE BEWERKING: 23-8-19
De date-fns bibliotheek werkt ongeveer zoals moment.js maar heeft een VEEL kleinere footprint. Hiermee kunt u zelf kiezen welke functies u in uw project wilt opnemen, zodat u niet de hele bibliotheek hoeft te compileren om de datum van vandaag te formatteren. Als een minimaal lib van derden geen optie is voor uw project, onderschrijf ik de geaccepteerde oplossing van Samuel Meddows bovenaan.

Hieronder de geschiedenis bewaren omdat het een paar mensen heeft geholpen. Maar voor de goede orde, het is behoorlijk hacky en kan zonder waarschuwing breken, net als de meeste oplossingen in dit bericht

BEWERK 2-7-2017
Een éénregelige JS-oplossing:

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 laatste, & chrome return todaysDate = "2/7/2017"
“works”* in IE10+

Uitleg

Ik kwam erachter dat IE10 en IE Edge de dingen een beetje anders doen.
met new Date(Date.now()).toLocaleString() als invoer,

IE10 retourneert:

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

Ik zou een grote lange functie en FTFY kunnen schrijven. Maar je zou hier echt moment.js voor moeten gebruiken. Mijn script maakt dit alleen schoon omhoog en geeft u de uitgebreide traditionele Amerikaanse notatie: > todaysDate = "March 06, 2017"

IE EDGE retourneert:

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

Zo eenvoudig kan het natuurlijk niet zijn. Edge’s datumreeks heeft onzichtbare ” “-tekens tussen elke zichtbare. We gaan nu dus niet alleen controleren of het eerste teken een getal is, maar ook de eerste 3 tekens, aangezien het blijkt dat elk afzonderlijk teken teken in het hele datumbereik zal op een gegeven moment uiteindelijk een punt of een schuine streep zijn. Dus om het simpel te houden, gewoon .slice( ) de eerste drie tekens (kleine buffer tegen toekomstige shenanigans) en controleer vervolgens op cijfers. Er moet waarschijnlijk worden opgemerkt dat deze onzichtbare stippen mogelijk in uw code kunnen blijven bestaan. Ik zou daar misschien in duiken als je grotere plannen hebt dan alleen deze string naar jouw mening af te drukken.

? bijgewerkte 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];

Dat is klote om te lezen. Wat dacht je van:

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];

ORIGINEEL ANTWOORD

Ik heb een oneliner voor je:

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

en [1] geven je de tijd van de dag.


Antwoord 24

Probeer

`${Date()}`.slice(4,15)
console.log( `${Date()}`.slice(4,15) )

Antwoord 25

JS gebruiken die is ingebouwd in Date.prototype.toLocaleDateString()
Van MDN-documenten: https://developer.mozilla .org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

const options = { 
  month: '2-digit', 
  day: '2-digit',
  year: 'numeric', 
};
console.log(new Date().toLocaleDateString('en-US', options)); // mm/dd/yyyy

Antwoord 26

U kunt dit gebruiken

<script>
function my_curr_date() {      
    var currentDate = new Date()
    var day = currentDate.getDate();
    var month = currentDate.getMonth() + 1;
    var year = currentDate.getFullYear();
    var my_date = month+"-"+day+"-"+year;
    document.getElementById("dateField").value=my_date;    
}
</script>

De HTML is

<body onload='return my_curr_date();'>
    <input type='text' name='dateField' id='dateField' value='' />
</body>

Antwoord 27

Een eenvoudige manier om dat voor elkaar te krijgen (terwijl je rekening houdt met je huidige tijdzone en profiteert van het ISO jjjj-mm-dd-formaat) is:

let d = new Date().toISOString().substring(0,19).replace("T"," ") // "2020-02-18 16:41:58"

Meestal is dit een redelijk universeel compatibel datumformaat en je kunt het indien nodig converteren naar pure datumwaarde:

Date.parse(d); // 1582044297000

Antwoord 28

Als u jQuery gebruikt. Probeer deze oneliner :

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

Hier is de conventie voor het opmaken van de datum

  • d – dag van de maand (geen voorloopnul)
  • dd – dag van de maand (twee cijfers)
  • o – dag van het jaar (geen voorloopnullen)
  • oo – dag van het jaar (drie cijfers)
  • D – dagnaam kort
  • DD – dagnaam lang
  • m – maand van het jaar (geen voorloopnul)
  • mm – maand van het jaar (twee cijfers)
  • M – maandnaam kort
  • MM – maandnaam lang
  • y – jaar (twee cijfers)
  • jj – jaar (vier cijfers)

Hier is de referentie voor jQuery datepicker


Antwoord 29

Dit is goed om een ​​opgemaakte datum te krijgen

let date = new Date().toLocaleDateString("en", {year:"numeric", day:"2-digit", month:"2-digit"});
console.log(date);

Antwoord 30

Als je op “huidige datum” aan “vandaag” denkt, dan kan deze truc voor jou werken:

> new Date(3600000*Math.floor(Date.now()/3600000))
2020-05-07T07:00:00.000Z

Op deze manier krijgt u vandaag Datum instantie met tijd 0:00:00.

Het werkingsprincipe is heel eenvoudig: we nemen de huidige tijdstempel en delen deze over 1 dag uitgedrukt in milliseconden. We krijgen een fractie. Door Math.floor te gebruiken, we verwijderen de breuk, dus we krijgen een geheel getal. Als we het nu met één dag vermenigvuldigen (opnieuw – in milliseconden), krijgen we een datum-tijdstempel met de tijd precies aan het begin van de dag.

> now = Date.now()
1588837459929
> daysInMs = now/3600000
441343.73886916664
> justDays = Math.floor(daysInMs)
441343
> today = justDays*3600000
1588834800000
> new Date(today)
2020-05-07T07:00:00.000Z

Schoon en eenvoudig.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

four × two =

Other episodes