JavaScripti kuupäeva ja Moment.js ülim juhend

Tere tulemast meie JavaScripti Dateobjekti ja Moment.js ülimale juhendile. See õpetus õpetab teile kõike, mida peate teadma oma projektides kuupäevade ja kellaaegadega töötamise kohta.

Kuidas Dateobjekti luua

Hankige praegune kuupäev ja kellaaeg

const now = new Date(); // Mon Aug 10 2019 12:58:21 GMT-0400 (Eastern Daylight Time)

Hankige individuaalsete väärtustega kuupäev ja kellaaeg

const specifiedDate = new Date(2019, 4, 29, 15, 0, 0, 0); // Wed May 29 2019 15:00:00 GMT-0400 (Eastern Daylight Time)

Süntaks on Date(year, month, day, hour, minute, second, millisecond).

Pange tähele, et kuud on nullindeksiga, alustades jaanuarist kell 0 ja lõpetades detsembriga kell 11.

Kuupäeva ja kellaaja hankimine ajatemplilt

const unixEpoch = new Date(0);

See tähistab neljapäeva, 1. jaanuari 1970 (UTC) või Unixi ajastu aega. Unixi ajastu on oluline, kuna seda kasutavad JavaScripti, Pythoni, PHP ning muud keeled ja süsteemid praeguse aja arvutamiseks sisemiselt.

new Date(ms) tagastab ajastu kuupäeva pluss millisekundite arvu, mille möödute. Päevas on 86 400 000 millisekundit, nii et:

const dayAfterEpoch = new Date(86400000);

naaseb reedel, 2. jaanuaril 1970 (UTC).

Hankige stringist kuupäev ja kellaaeg

const stringDate = new Date('May 29, 2019 15:00:00'); // Wed May 29 2019 15:00:00 GMT-0400 (Eastern Daylight Time)

Sellisel viisil kuupäeva saamine on väga paindlik. Kõik allpool toodud näited tagastavad kehtivad Dateobjektid:

new Date('2019-06') // June 1st, 2019 00:00:00 new Date('2019-06-16') // June 16th, 2019 new Date('2019') // January 1st, 2019 00:00:00 new Date('JUNE 16, 2019') new Date('6/23/2019')

Samuti saate Date.parse()meetodi abil tagastada millisekundite arvu alates ajastust (1. jaanuar 1970):

Date.parse('1970-01-02') // 86400000 Date.parse('6/16/2019') // 1560610800000

Ajavööndi määramine

Kuupäeva stringi edastamisel ilma ajavööndit määramata eeldab JavaScript, et enne brauseri ajavööndiks teisendamist on kuupäev / kellaaeg UTC-s.

const exactBirthdate = new Date('6/13/2018 06:27:00'); console.log(exactBirthdate) // Wed Jun 13 2018 06:27:00 GMT+0900 (Korean Standard Time)

See võib põhjustada vigu, kui tagastatav kuupäev on mitu tundi välja lülitatud. Selle vältimiseks sisestage ajavöönd koos stringiga:

const exactBirthdate = new Date('6/13/2018 06:27:00 GMT-1000'); console.log(exactBirthdate) // Thu Jun 14 2018 01:27:00 GMT+0900 (Korean Standard Time) /* These formats also work: new Date('6/13/2018 06:27:00 GMT-10:00'); new Date('6/13/2018 06:27:00 -1000'); new Date('6/13/2018 06:27:00 -10:00'); */

Võite edastada ka mõned, kuid mitte kõik, ajavööndi koodid:

const exactBirthdate = new Date('6/13/2018 06:27:00 PDT'); console.log(exactBirthdate) // Thu Jun 14 2018 01:27:00 GMT+0900 (Korean Standard Time)

Date Objekti meetodid

Sageli pole vaja kogu kuupäeva, vaid lihtsalt osa sellest, näiteks päev, nädal või kuu. Õnneks on selleks mitmed meetodid:

const birthday = new Date('6/13/2018 06:27:39'); birthday.getMonth() // 5 (0 is January) birthday.getDate() // 13 birthday.getDay() // 3 (0 is Sunday) birthday.getFullYear() // 2018 birthday.getTime() // 1528838859000 (milliseconds since the Unix Epoch) birthday.getHours() // 6 birthday.getMinutes() // 27 birthday.getSeconds() // 39 birthday.getTimezoneOffset() // -540 (time zone offset in minutes based on your browser's location)

Muuda kuupäevadega töötamine Moment.js-iga lihtsamaks

Kuupäevade ja kellaaegade õigeks saamine pole väike ülesanne. Tundub, et igas riigis on kuupäevade vormistamiseks erinev viis ja erinevate ajavööndite ning suveaja / suveaja arvestamine võtab hästi palju aega. Seal särab Moment.js - see muudab kuupäevade sõelumise, vormindamise ja kuvamise imelihtsaks.

Moment.js kasutamise alustamiseks installige see paketihalduri kaudu npmvõi lisage see oma saidile CDN-i kaudu. Lisateavet leiate Moment.js dokumentatsioonist.

Hetke kuupäev ja kellaaeg leiate saidilt Moment.js

const now = moment();

See tagastab objekti, millel on teie brauseri asukohal põhinev kuupäev ja kellaaeg koos muu lokaliseerimisteabega. See sarnaneb natiivsete JavaScripti omadega new Date().

Moment.js abil saate ajatemplilt kuupäeva ja kellaaja

Sarnaselt sellele new Date(ms)saate edastada ajast pärineva millisekundite arvu järgmisele moment():

const dayAfterEpoch = moment(86400000);

Kui soovite saada kuupäeva, kasutades Unixi ajatemplit sekundites, võite kasutada unix()meetodit:

const dayAfterEpoch = moment.unix(86400);

Moment.js abil saate stringist kuupäeva ja kellaaja

Momendi.js abil on stringist kuupäeva parsimine lihtne ja teek aktsepteerib stringi vormingus ISO 8601 või RFC 2822 kuupäeva ja kellaaja kõik stringid, mille JavaScripti Dateobjekt aktsepteerib .

Soovitatavad on ISO 8601 stringid, kuna see on laialt aktsepteeritud formaat. siin on mõned näidised:

moment('2019-04-21'); moment('2019-04-21T05:30'); moment('2019-04-21 05:30'); moment('20190421'); moment('20190421T0530');

Ajavööndi määramine rakendusega Moment.js

Up until now, we have been using Moment.js in local mode, meaning that any input is assumed to be a local date or time. This is similar to how the native JavaScript Date object works:

const exactBirthMoment = moment('2018-06-13 06:27:00'); console.log(exactBirthMoment) // Wed Jun 13 2018 06:27:00 GMT+0900 (Korean Standard Time)

However, to set a time zone, you must first get the Moment object in UTC mode:

const exactBirthMoment = moment.utc('2018-06-13 06:27:00'); console.log(exactBirthMoment) // Wed Jun 13 2018 15:27:00 GMT+0900 (Korean Standard Time)

Then you can adjust for the difference in time zones with the utcOffset() method:

const exactBirthMoment = moment.utc('2018-06-13 06:27:00').utcOffset('+10:00'); console.log(exactBirthMoment) // Wed Jun 13 2018 06:27:00 GMT+0900 (Korean Standard Time)

You can also set the UTC offset as a number or a string:

moment.utc().utcOffset(10) // Number of hours offset moment.utc().utcOffset(600) // Number of minutes offset moment.utc().utcOffset('+10:00') // Number of hours offset as a string

To use named time zones (America/Los_Angeles) or time zone codes (PDT) with Moment objects, check out the Moment Timezone library.

Format the date and time with Moment.js

One of the major strengths that Moment.js has over native JavaScript Date objects is how easy it is to format the output date and time. Just chain the  format() method to a Moment date object and pass it a format string as a parameter:

moment().format('MM-DD-YY'); // "08-13-19" moment().format('MM-DD-YYYY'); // "08-13-2019" moment().format('MM/DD/YYYY'); // "08/13/2019" moment().format('MMM Do, YYYY') // "Aug 13th, 2019" moment().format('ddd MMMM Do, YYYY HH:mm:ss') // "Tues August 13th, 2019 19:29:20" moment().format('dddd, MMMM Do, YYYY -- hh:mm:ss A') // "Tuesday, August 13th, 2019 -- 07:31:02 PM"

Here's a table with some common formatting tokens:

Input Output Description
YYYY 2019 4 digit year
YY 19 2 digit year
MMMM August Full month name
MMM Aug Abbreviated month name
MM 08 2 digit month
M 8 1 digit month
DDD 225 Day of the year
DD 13 Day of the month
Do 13th Day of the month with ordinal
dddd Wednesday Full day name
ddd Wed Abbreviated day name
HH 17 Hours in 24 hour time
hh 05 Hours in 12 hour time
mm 32 Minutes
ss 19 Seconds
a am / pm Ante or post meridiem
A AM / PM Capitalized ante or post meridiem
ZZ +0900 Timezone offset from UTC
X 1410715640.579 Unix timestamp in seconds
XX 1410715640579 Unix timestamp in milliseconds

Vormindamismärkide lisateabe saamiseks lugege Moment.js dokumente.

JavaScripti Dateobjektide ja Moment.js-ga töötamine ei pea olema aeganõudev. Nüüd peaksite mõlemaga alustamiseks teadma rohkem kui piisavalt.