Zoeken…


Syntaxis

  • nieuwe datum();
  • nieuwe datum (waarde);
  • nieuwe datum (dateAsString);
  • nieuwe datum (jaar, maand [, dag [, uur [, minuut [, tweede [, millisecond]]]]];

parameters

Parameter Details
value Het aantal milliseconden sinds 1 januari 1970 00: 00: 00.000 UTC (Unix-tijdperk)
dateAsString Een datum die is opgemaakt als een tekenreeks (zie voorbeelden voor meer informatie)
year De jaarwaarde van de datum. Merk op dat ook de month moet worden opgegeven, anders wordt de waarde geïnterpreteerd als een aantal milliseconden. Merk ook op dat waarden tussen 0 en 99 een speciale betekenis hebben. Zie de voorbeelden.
month De maand, in het bereik van 0-11 . Merk op dat het gebruik van waarden buiten het opgegeven bereik voor deze en de volgende parameters niet zal resulteren in een fout, maar eerder dat de resulterende datum naar de volgende waarde "doorrolt". Zie de voorbeelden.
day Optioneel: de datum in het bereik 1-31 .
hour Optioneel: het uur, in het bereik 0-23 .
minute Optioneel: de minuut, in het bereik 0-59 .
second Optioneel: de tweede, in het bereik 0-59 .
millisecond Optioneel: de milliseconde, in het bereik 0-999 .

Download de huidige tijd en datum

Gebruik new Date() om een nieuw object Date met de huidige datum en tijd te genereren.

Merk op dat Date() zonder argumenten wordt opgeroepen gelijk is aan new Date(Date.now()) .

Zodra u een getFullYear() hebt, kunt u een van de verschillende beschikbare methoden toepassen om de eigenschappen ervan te extraheren (bijvoorbeeld getFullYear() om het 4-cijferige jaar te krijgen).

Hieronder staan enkele veel voorkomende datummethoden.

Krijg het lopende jaar

var year = (new Date()).getFullYear();
console.log(year);
// Sample output: 2016 

Ontvang de huidige maand

var month = (new Date()).getMonth();
console.log(month);
// Sample output: 0 

Let op: 0 = januari. Dit komt omdat maanden variëren van 0 tot 11 , dus het is vaak wenselijk om +1 aan de index toe te voegen.

Ontvang de huidige dag

var day = (new Date()).getDate();
console.log(day);
// Sample output: 31

Krijg het huidige uur

var hours = (new Date()).getHours();
console.log(hours);
// Sample output: 10

Download de huidige minuten

var minutes = (new Date()).getMinutes();
console.log(minutes);
// Sample output: 39

Krijg de huidige seconden

var seconds = (new Date()).getSeconds();
console.log(second);
// Sample output: 48

Download de huidige milliseconden

Gebruik de methode getMilliseconds om de milliseconden (variërend van 0 tot 999) van een exemplaar van een object Date getMilliseconds .

var milliseconds = (new Date()).getMilliseconds();
console.log(milliseconds);
 // Output: milliseconds right now

Converteer de huidige tijd en datum naar een voor mensen leesbare reeks

var now = new Date();
// convert date to a string in UTC timezone format:
console.log(now.toUTCString());
// Output: Wed, 21 Jun 2017 09:13:01 GMT

De statische methode Date.now() retourneert het aantal milliseconden dat is verstreken sinds 1 januari 1970 00:00:00 UTC. Gebruik de methode getTime om het aantal milliseconden te bepalen dat sinds die tijd is verstreken met een instantie van een object Date .

// get milliseconds using static method now of Date
console.log(Date.now());

// get milliseconds using method getTime of Date instance
console.log((new Date()).getTime());

Maak een nieuw object Date

Om een nieuwe Date gebruik object de Date() bouwer:

  • zonder argumenten

    Date() maakt een Date instantie met de huidige tijd (tot milliseconden) en datum.

  • met één geheel getalargument

    Date(m) maakt een Date instantie met de tijd en datum die overeenkomen met de Epoch-tijd (1 januari 1970 UTC) plus m milliseconden. Voorbeeld: new Date(749019369738) geeft de datum zo, 26 september 1993 04:56:09 GMT .

  • met een stringargument

    Date(dateString) retourneert het object Date dat resulteert na het parseren van dateString met Date.parse .

  • met twee of meer gehele argumenten

    Date(i1, i2, i3, i4, i5, i6) leest de argumenten als jaar, maand, dag, uren, minuten, seconden, milliseconden en instantieert het overeenkomstige object Date . Merk op dat de maand 0 is geïndexeerd in JavaScript, dus 0 betekent januari en 11 betekent december. Voorbeeld: new Date(2017, 5, 1) geeft 1 juni 2017 .


Datums verkennen

Merk op dat deze voorbeelden werden gegenereerd in een browser in de centrale tijdzone van de VS, tijdens zomertijd, zoals blijkt uit de code. Waar de vergelijking met UTC leerzaam was, werd Date.prototype.toISOString() gebruikt om de datum en tijd in UTC weer te geven (de Z in de opgemaakte tekenreeks geeft UTC aan).

// Creates a Date object with the current date and time from the 
// user's browser
var now = new Date();
now.toString() === 'Mon Apr 11 2016 16:10:41 GMT-0500 (Central Daylight Time)' 
// true
// well, at the time of this writing, anyway

// Creates a Date object at the Unix Epoch (i.e., '1970-01-01T00:00:00.000Z')
var epoch = new Date(0);
epoch.toISOString() === '1970-01-01T00:00:00.000Z' // true

// Creates a Date object with the date and time 2,012 milliseconds 
// after the Unix Epoch (i.e., '1970-01-01T00:00:02.012Z').
var ms = new Date(2012); 
date2012.toISOString() === '1970-01-01T00:00:02.012Z' // true

// Creates a Date object with the first day of February of the year 2012 
// in the local timezone.
var one = new Date(2012, 1);
one.toString() === 'Wed Feb 01 2012 00:00:00 GMT-0600 (Central Standard Time)' 
// true

// Creates a Date object with the first day of the year 2012 in the local 
// timezone.
// (Months are zero-based) 
var zero = new Date(2012, 0);
zero.toString() === 'Sun Jan 01 2012 00:00:00 GMT-0600 (Central Standard Time)' 
// true

// Creates a Date object with the first day of the year 2012, in UTC.
var utc = new Date(Date.UTC(2012, 0));
utc.toString() === 'Sat Dec 31 2011 18:00:00 GMT-0600 (Central Standard Time)'
// true
utc.toISOString() === '2012-01-01T00:00:00.000Z'
// true

// Parses a string into a Date object (ISO 8601 format added in ECMAScript 5.1)
// Implementations should assumed UTC because of ISO 8601 format and Z designation
var iso = new Date('2012-01-01T00:00:00.000Z');
iso.toISOString() === '2012-01-01T00:00:00.000Z' // true

// Parses a string into a Date object (RFC in JavaScript 1.0)
var local = new Date('Sun, 01 Jan 2012 00:00:00 -0600');
local.toString() === 'Sun Jan 01 2012 00:00:00 GMT-0600 (Central Standard Time)'
// true

// Parses a string in no particular format, most of the time. Note that parsing
// logic in these cases is very implementation-dependent, and therefore can vary
// across browsers and versions.
var anything = new Date('11/12/2012'); 
anything.toString() === 'Mon Nov 12 2012 00:00:00 GMT-0600 (Central Standard Time)'
// true, in Chrome 49 64-bit on Windows 10 in the en-US locale. Other versions in 
// other locales may get a different result.

// Rolls values outside of a specified range to the next value.
var rollover = new Date(2012, 12, 32, 25, 62, 62, 1023);
rollover.toString() === 'Sat Feb 02 2013 02:03:03 GMT-0600 (Central Standard Time)'
// true; note that the month rolled over to Feb; first the month rolled over to 
// Jan based on the month 12 (11 being December), then again because of the day 32
// (January having 31 days).

// Special dates for years in the range 0-99
var special1 = new Date(12, 0);
special1.toString() === 'Mon Jan 01 1912 00:00:00 GMT-0600 (Central Standard Time)`
// true

// If you actually wanted to set the year to the year 12 CE, you'd need to use the
// setFullYear() method:
special1.setFullYear(12);
special1.toString() === 'Sun Jan 01   12 00:00:00 GMT-0600 (Central Standard Time)`
// true

Converteren naar JSON

var date1 = new Date();
date1.toJSON();

Retourneert: "2016-04-14T23: 49: 08.596Z"

Een datum maken op basis van UTC

Standaard wordt een object Date gemaakt als lokale tijd. Dit is niet altijd wenselijk, bijvoorbeeld bij het communiceren van een datum tussen een server en een client die zich niet in dezelfde tijdzone bevinden. In dit scenario wil men zich helemaal geen zorgen maken over tijdzones totdat de datum in lokale tijd moet worden weergegeven, als dat überhaupt nodig is.

Het probleem

In dit probleem willen we een specifieke datum (dag, maand, jaar) communiceren met iemand in een andere tijdzone. De eerste implementatie gebruikt naïef lokale tijden, wat resulteert in verkeerde resultaten. De tweede implementatie maakt gebruik van UTC-datums om tijdzones te vermijden waar ze niet nodig zijn.

Naïeve aanpak met verkeerde resultaten

function formatDate(dayOfWeek, day, month, year) {
  var daysOfWeek = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
  var months = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
  return daysOfWeek[dayOfWeek] + " " + months[month] + " " + day + " " + year;
}

//Foo lives in a country with timezone GMT + 1
var birthday = new Date(2000,0,1);
console.log("Foo was born on: " + formatDate(birthday.getDay(), birthday.getDate(),
      birthday.getMonth(), birthday.getFullYear()));

sendToBar(birthday.getTime());

Voorbeelduitvoer: Foo was born on: Sat Jan 1 2000

//Meanwhile somewhere else...

//Bar lives in a country with timezone GMT - 1
var birthday = new Date(receiveFromFoo());
console.log("Foo was born on: " + formatDate(birthday.getDay(), birthday.getDate(),
      birthday.getMonth(), birthday.getFullYear()));

Voorbeelduitvoer: Foo was born on: Fri Dec 31 1999

En dus zou Bar altijd geloven dat Foo op de laatste dag van 1999 werd geboren.

Juiste aanpak

function formatDate(dayOfWeek, day, month, year) {
  var daysOfWeek = ["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];
  var months = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
  return daysOfWeek[dayOfWeek] + " " + months[month] + " " + day + " " + year;
}

//Foo lives in a country with timezone GMT + 1
var birthday = new Date(Date.UTC(2000,0,1));
console.log("Foo was born on: " + formatDate(birthday.getUTCDay(), birthday.getUTCDate(),
      birthday.getUTCMonth(), birthday.getUTCFullYear()));

sendToBar(birthday.getTime());

Voorbeelduitvoer: Foo was born on: Sat Jan 1 2000

//Meanwhile somewhere else...

//Bar lives in a country with timezone GMT - 1
var birthday = new Date(receiveFromFoo());
console.log("Foo was born on: " + formatDate(birthday.getUTCDay(), birthday.getUTCDate(), 
      birthday.getUTCMonth(), birthday.getUTCFullYear()));

Voorbeelduitvoer: Foo was born on: Sat Jan 1 2000

Een datum maken op basis van UTC

Als je een Date object wilt maken op basis van UTC of GMT, kan de Date.UTC(...) -methode worden gebruikt. Het gebruikt dezelfde argumenten als de langste Date constructor. Deze methode retourneert een getal dat de tijd aangeeft die is verstreken sinds 1 januari 1970, 00:00:00 UTC.

console.log(Date.UTC(2000,0,31,12));

Voorbeelduitvoer: 949320000000

var utcDate = new Date(Date.UTC(2000,0,31,12));
console.log(utcDate);

Voorbeelduitvoer: Mon Jan 31 2000 13:00:00 GMT+0100 (West-Europa (standaardtijd))

Het is niet verwonderlijk dat het verschil tussen UTC-tijd en lokale tijd in feite de tijdzone-offset is omgezet in milliseconden.

var utcDate = new Date(Date.UTC(2000,0,31,12));
var localDate = new Date(2000,0,31,12);

console.log(localDate - utcDate === utcDate.getTimezoneOffset() * 60 * 1000);

Voorbeelduitvoer: true

Een datumobject wijzigen

Alle setDate(...) Date , zoals setDate(...) en setFullYear(...) hebben een equivalent en hebben een argument in UTC-tijd in plaats van in lokale tijd.

var date = new Date();
date.setUTCFullYear(2000,0,31);
date.setUTCHours(12,0,0,0);
console.log(date);

Voorbeelduitvoer: Mon Jan 31 2000 13:00:00 GMT+0100 (West-Europa (standaardtijd))

De andere UTC-specifieke modificaties zijn .setUTCMonth() , .setUTCDate() (voor de dag van de maand), .setUTCMinutes() , .setUTCSeconds() en .setUTCMilliseconds() .

Dubbelzinnigheid vermijden met getTime () en setTime ()

Wanneer de bovenstaande methoden nodig zijn om onderscheid te maken tussen onduidelijkheid in datums, is het meestal gemakkelijker om een datum te communiceren als de hoeveelheid tijd die is verstreken sinds 1 januari 1970, 00:00:00 UTC. Dit enkele nummer vertegenwoordigt een enkel tijdstip en kan indien nodig worden omgezet in lokale tijd.

var date = new Date(Date.UTC(2000,0,31,12));
var timestamp = date.getTime();
//Alternatively
var timestamp2 = Date.UTC(2000,0,31,12);
console.log(timestamp === timestamp2);

Voorbeelduitvoer: true

//And when constructing a date from it elsewhere...
var otherDate = new Date(timestamp);

//Represented as an universal date
console.log(otherDate.toUTCString());
//Represented as a local date
console.log(otherDate);

Voorbeeld output:

Mon, 31 Jan 2000 12:00:00 GMT
Mon Jan 31 2000 13:00:00 GMT+0100 (West-Europa (standaardtijd))

Converteren naar een tekenreeksindeling

Converteer naar String

var date1 = new Date();
date1.toString();

Retouren: "Vrij 15 april 2016 07:48:48 GMT-0400 (Eastern Daylight Time)"


Omzetten in tijdreeks

var date1 = new Date();
date1.toTimeString();

Retourneert: "07:48:48 GMT-0400 (Eastern Daylight Time)"


Omzetten naar datumreeks

var date1 = new Date();
date1.toDateString();

Retourneert: "do 14 apr. 2016"


Omzetten naar UTC-reeks

var date1 = new Date();
date1.toUTCString();

Retouren: "Vr, 15 apr 2016 11:48:48 GMT"


Converteren naar ISO-reeks

var date1 = new Date();
date1.toISOString();

Retourneert: "2016-04-14T23: 49: 08.596Z"


Converteer naar GMT String

var date1 = new Date();
date1.toGMTString();

Retouren: "Do, 14 apr 2016 23:49:08 GMT"

Deze functie is gemarkeerd als verouderd, zodat sommige browsers deze in de toekomst mogelijk niet meer ondersteunen. Er wordt voorgesteld om in plaats daarvan toUTCString () te gebruiken.


Omzetten naar lokale datumreeks

var date1 = new Date();
date1.toLocaleDateString();

Retouren: "14-04-2016"

Deze functie retourneert standaard een locale gevoelige datumstring op basis van de locatie van de gebruiker.

date1.toLocaleDateString([locales [, options]])

kan worden gebruikt om specifieke locaties te bieden, maar is browser-implementatie specifiek. Bijvoorbeeld,

date1.toLocaleDateString(["zh", "en-US"]);

zou proberen de tekenreeks in de Chinese taal af te drukken met het Engels van de Verenigde Staten als reserve. De optieparameter kan worden gebruikt om specifieke opmaak te bieden. Bijvoorbeeld:

var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
date1.toLocaleDateString([], options);

zou resulteren in

"Donderdag 14 april 2016".

Zie het MDN voor meer informatie.

Een datumobject verhogen

Om datumobjecten in Javascript te verhogen, kunnen we dit meestal doen:

var checkoutDate = new Date();    // Thu Jul 21 2016 10:05:13 GMT-0400 (EDT)

checkoutDate.setDate( checkoutDate.getDate() + 1 );

console.log(checkoutDate); // Fri Jul 22 2016 10:05:13 GMT-0400 (EDT)

Het is mogelijk om setDate te gebruiken om de datum te veranderen in een dag in de volgende maand door een waarde te gebruiken die groter is dan het aantal dagen in de huidige maand -

var checkoutDate = new Date();    // Thu Jul 21 2016 10:05:13 GMT-0400 (EDT)
checkoutDate.setDate( checkoutDate.getDate() + 12 );
console.log(checkoutDate); // Tue Aug 02 2016 10:05:13 GMT-0400 (EDT)

Hetzelfde geldt voor andere methoden zoals getHours (), getMonth (), enz.

Werkdagen toevoegen

Als u werkdagen wilt toevoegen (in dit geval neem ik aan dat maandag - vrijdag), kunt u de functie setDate , hoewel u een beetje extra logica nodig hebt om rekening te houden met de weekenden (uiteraard houdt dit geen rekening met nationale feestdagen) -

function addWorkDays(startDate, days) {
    // Get the day of the week as a number (0 = Sunday, 1 = Monday, .... 6 = Saturday)
    var dow = startDate.getDay();
    var daysToAdd = days;
    // If the current day is Sunday add one day
    if (dow == 0)
        daysToAdd++;
    // If the start date plus the additional days falls on or after the closest Saturday calculate weekends
    if (dow + daysToAdd >= 6) {
        //Subtract days in current working week from work days
        var remainingWorkDays = daysToAdd - (5 - dow);
        //Add current working week's weekend
        daysToAdd += 2;
        if (remainingWorkDays > 5) {
            //Add two days for each working week by calculating how many weeks are included
            daysToAdd += 2 * Math.floor(remainingWorkDays / 5);
            //Exclude final weekend if remainingWorkDays resolves to an exact number of weeks
            if (remainingWorkDays % 5 == 0)
                daysToAdd -= 2;
        }
    }
    startDate.setDate(startDate.getDate() + daysToAdd);
    return startDate;
}

Krijg het aantal milliseconden dat is verstreken sinds 1 januari 1970 00:00:00 UTC

De statische methode Date.now retourneert het aantal milliseconden dat is verstreken sinds 1 januari 1970 00:00:00 UTC. Gebruik de methode getTime om het aantal milliseconden te bepalen dat sinds die tijd is verstreken met een instantie van een object Date .

// get milliseconds using static method now of Date
console.log(Date.now());

// get milliseconds using method getTime of Date instance
console.log((new Date()).getTime());

Een JavaScript-datum opmaken

Een JavaScript-datum opmaken in moderne browsers

In moderne browsers (*) kunt u met Date.prototype.toLocaleDateString() de opmaak van een Date op een handige manier definiëren.

Het vereist het volgende formaat:

dateObj.toLocaleDateString([locales [, options]])

De parameter locales moet een tekenreeks zijn met een BCP 47-taaltag of een reeks van dergelijke tekenreeksen.

De parameter options moet een object zijn met enkele of alle van de volgende eigenschappen:

  • localeMatcher : mogelijke waarden zijn "lookup" en "best fit" ; de standaard is "best fit"
  • timeZone : de enige waarde die implementaties moeten herkennen is "UTC" ; de standaardwaarde is de standaardtijdzone van de runtime
  • hour12 : mogelijke waarden zijn true en false ; de standaard is locale afhankelijk
  • formatMatcher : mogelijke waarden zijn "basic" en "best fit" ; de standaard is "best fit"
  • weekdag : mogelijke waarden zijn "narrow" , "short" & "long"
  • tijdperk : mogelijke waarden zijn "narrow" , "short" & "long"
  • jaar : mogelijke waarden zijn "numeric" & "2-digit"
  • maand : mogelijke waarden zijn "numeric" , "2-digit" , "narrow" , "short" & "long"
  • dag : mogelijke waarden zijn "numeric" & "2-digit"
  • uur : mogelijke waarden zijn "numeric" & "2-digit"
  • minuut : mogelijke waarden zijn "numeric" & "2-digit"
  • tweede : mogelijke waarden zijn "numeric" & "2-digit"
  • timeZoneName : mogelijke waarden zijn "short" & "long"

Hoe te gebruiken

var today = new Date().toLocaleDateString('en-GB', {  
    day : 'numeric',
    month : 'short',
    year : 'numeric'
});

Uitvoer indien uitgevoerd op 24 januari 2036:

'24 Jan 2036'

Aangepast worden

Als Date.prototype.toLocaleDateString() niet flexibel genoeg is om aan al uw behoeften te voldoen, kunt u overwegen een aangepast Date-object te maken dat er als volgt uitziet:

var DateObject = (function() {
    var monthNames = [
      "January", "February", "March",
      "April", "May", "June", "July",
      "August", "September", "October",
      "November", "December"
    ];
    var date = function(str) {
        this.set(str);
    };
    date.prototype = {
        set : function(str) {
            var dateDef = str ? new Date(str) : new Date();
            this.day = dateDef.getDate();
            this.dayPadded = (this.day < 10) ? ("0" + this.day) : "" + this.day;
            this.month = dateDef.getMonth() + 1;
            this.monthPadded = (this.month < 10) ? ("0" + this.month) : "" + this.month;
            this.monthName = monthNames[this.month - 1];
            this.year = dateDef.getFullYear();
        },
        get : function(properties, separator) {
            var separator = separator ? separator : '-'
                ret = [];
            for(var i in properties) {
                ret.push(this[properties[i]]);
            }
            return ret.join(separator);
        }
    };
    return date;
})();

Als u die code zou opnemen en new DateObject() op 20 januari 2019 zou uitvoeren, zou dit een object met de volgende eigenschappen produceren:

day: 20
dayPadded: "20"
month: 1
monthPadded: "01"
monthName: "January"
year: 2019

Om een opgemaakte string te krijgen, zou je zoiets kunnen doen:

new DateObject().get(['dayPadded', 'monthPadded', 'year']);

Dat zou de volgende output opleveren:

20-01-2016

(*) Volgens de MDN betekent "moderne browsers" Chrome 24+, Firefox 29+, IE11, Edge12 +, Opera 15+ & Safari nachtelijke build



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow