Vinnaren i pepparkakshustävlingen!
2018-02-28, 18:28
  #1
Medlem
Finns det någon som helst skillnad mellan javascripts getHours och getUTCHours?

Vad är egentligen skillnaden? Kan de någonsin ge olika resultat, ens i teorin?

Vad är "universell tid" på vanlig svenska?

Som ni ser så ger de båda funktionerna identiska resultat i dessa exempel:
Kod:
const date1 = new Date('December 31, 1975, 23:15:30 GMT+11:00');
const date2 = new Date('December 31, 1975, 23:15:30 GMT-11:00');

console.log(date1.getUTCMonth()); // 11
console.log(date2.getUTCMonth()); // 0

console.log(date1.getMonth()); // 11
console.log(date2.getMonth()); // 0

Dokumentation för getUTCMonth (inkl. konsoll att leka med)
https://developer.mozilla.org/en-US/...te/getUTCMonth

Dokumentation för getMonth (inkl. konsoll att leka med):
https://developer.mozilla.org/en-US/.../Date/getMonth


Why? What's goin' on?
__________________
Senast redigerad av Daudodidi 2018-02-28 kl. 18:38.
Citera
2018-02-28, 19:31
  #2
Moderator
vhes avatar
getHours() ger svar i din tidszon (gissningsvis GMT+1), inte tidszonen du angav datumet i när det parsades. Båda tidpunkter du angav hade samma månad i UTC och GMT+1.

Kod:
> d = new Date('January 1, 1976, 00:00:01 GMT+01:00')
Thu Jan 01 1976 00:00:01 GMT+0100 (CET)
> d.getUTCMonth()
11
> d.getMonth()
0

Citera
2018-02-28, 19:36
  #3
Medlem
Citat:
Ursprungligen postat av vhe
getHours() ger svar i din tidszon (gissningsvis GMT+1), inte tidszonen du angav datumet i när det parsades. Båda tidpunkter du angav hade samma månad i UTC och GMT+1.

Kod:
> d = new Date('January 1, 1976, 00:00:01 GMT+01:00')
Thu Jan 01 1976 00:00:01 GMT+0100 (CET)
> d.getUTCMonth()
11
> d.getMonth()
0

Ah! Då förstår jag! Tack!
Citera
2018-02-28, 19:38
  #4
Medlem
getHours() visar klockan efter den lokala tidszonen, medan getUTCHours() ger resultatet enligt koordinerad universell tid (UTC). UTC är en typ av referenstid som bland annat används för att definiera övriga tidszoner.

I Sverige gäller nu UTC+1 (centraleuropeisk tid), varför getHours() visar en timme mer än getUTCHours() när jag kör följande:

Kod:
var date = new Date();
console.log( date.getHours() );
console.log( date.getUTCHours() );

Resultat:

Kod:
19
18

EDIT: Tvåa på den berömda pucken.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback