Moment: рдХреНрдпрд╛ рдмреИрдХрдПрдВрдб рдЯрд╛рдЗрдордЬрд╝реЛрди рд░рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 4 рдЕрдХреНрддреВре░ 2018  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: moment/moment

рдореБрджреНрджреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг рдФрд░ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо:
рдорд╛рди рд▓реЗрдВ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдмреИрдХрдПрдВрдб рд╕реЗ рдПрдХ рддрд┐рдерд┐ рдорд┐рд▓реА рд╣реИ:

"2018-10-10T13:00:00+11:00"

рдореИрдВ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдФрд░ рд╕реНрд╡рд░реВрдкрдг рдХреЗ рдмрд╛рдж рджреГрд╢реНрдпрдкрдЯрд▓ рдореЗрдВ рдХреНрдпрд╛ рджреЗрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ:

10-10-2018 1.00 PM

рдореБрдЭреЗ рдХреНрдпрд╛ рдорд┐рд▓рд╛:

10-10-2018 5.00 AM

рдореБрдЭреЗ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд╕рд┐рд╕реНрдЯрдо рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреНрдпрд╛ рд╣реИред рдореИрдВ рдпреВрдЯреАрд╕реА рд╕рдордп рднреА рдирд╣реАрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ред рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдХреГрдкрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рднреА рдЪрд░реЛрдВ рдХреЗ рдорд╛рди рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред

рдКрдкрд░ рджреЗрдЦреЛред

рд╡рд╛рддрд╛рд╡рд░рдг:

рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдпрд╣ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рдореБрджреНрджрд╛ рд╣реИ, рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ!

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ parseZone :

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмреАрдПрд╕рдЯреА (рдпреВрдЯреАрд╕реА + 1) рдореЗрдВ рд▓реЛрдХреЗрд▓ рдЯрд╛рдЗрдордЬрд╝реЛрди рдХреЗ рд▓рд┐рдП

moment.parseZone("2018-10-10T13:00:00+11:00").format(); // "2018-10-10T13:00:00+11:00"
moment.parseZone("2018-10-10T13:00:00+11:00").local().format(); // "2018-10-10T03:00:00+01:00"
moment.parseZone("2018-10-10T13:00:00+11:00").utc().format(); // "2018-10-10T02:00:00Z"

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Afaik, рдХрд┐рд╕реА рджрд┐рдирд╛рдВрдХ рдХреЛ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдЯрд╛рдЗрдордЬрд╝реЛрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрддрд╛ рд╣реИ (рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рднреА рд╣реИ)ред рддреЛ рд╣рд╛рдБ, рдХрд┐рд╕реА рддрд┐рдерд┐ рдХреЛ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░рдирд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдореБрдЭреЗ рдпрд╣ рдЖрдкрдХреА рддрд┐рдерд┐ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рдореЗрд░реЗ рд╕реНрдерд╛рдиреАрдп рд╕рдордп (рдСрдХрд▓реИрдВрдб) рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╕рдордп рд╣реИ:

moment("2018-10-10T13:00:00+11:00").format()
// => '2018-10-10T15:00:00+13:00'

рдпрджрд┐ рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк moment-timezone рдХрд╛ рдЙрдкрдпреЛрдЧ IANA рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдирд╛рдо рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

moment.tz.setDefault('America/New_York');

рдпрд╣ рдЙрд╕ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рд╕реНрд╡рд░реВрдкрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрдЧрд╛ред

рдпрд╣рд╛рдВ рдбреЙрдХреНрд╕ рдХрд╛ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://momentjs.com/timezone/docs/#/using -timezones/default-timezone/


рдСрдлрд╝рд╕реЗрдЯ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЯрд╛рдЗрдордЬрд╝реЛрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдЯрд╛рдЗрдордЬрд╝реЛрди рдПрдХ рд╣реА рдСрдлрд╝рд╕реЗрдЯ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдбреЗрд▓рд╛рдЗрдЯ рд╕реЗрд╡рд┐рдВрдЧ рдЯрд╛рдЗрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рд▓реЗрдХрд┐рди рдЖрдк "рдЬреЗрдиреЗрд░рд┐рдХ" рдЬрд╝реЛрди рдХреЗ рд▓рд┐рдП Etc рдЬрд╝реЛрди рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ Etc/GMT-11 рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ (рдЙрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЪрд┐рдиреНрд╣ рдЙрд▓реНрдЯрд╛ рд╣реИ)ред рдЖрдкрдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЯрд╛рдЗрдордЬрд╝реЛрди рдХреЛ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦрдирд╛, рдпрд╛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рд╕рд╣реЗрдЬрдирд╛ рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдлрд┐рд░ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рддрд┐рдерд┐ рдореБрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

moment.tz("2018-10-10T13:00:00+11:00", "America/New_York");

рдзрдиреНрдпрд╡рд╛рдж, @simonhaenisch

рдореИрдВрдиреЗ tz рдкреНрд▓рдЧрдЗрди рджреЗрдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рд╕рдордп рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдПрдХ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рдирд╛ред рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╕рд┐рд░реНрдл рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЫреВрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ :)

рдпрджрд┐ рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕рд░реНрд╡рд░ рдореЗрдВ рдХреЛрдИ default рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдирд╣реАрдВ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рдЕрдкрдирд╛ рдЯрд╛рдЗрдордЬрд╝реЛрди рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдлреНрд░рдВрдЯрдПрдВрдб рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред

рдСрдлрд╝рд╕реЗрдЯ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ

рдпрд╣ рдареАрдХ рд╣реИ, рдореБрдЭреЗ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдмрд╕ рдЖрдиреЗ рд╡рд╛рд▓реА рддрд╛рд░реАрдЦ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрджрд▓рд╛рд╡ рдХреЗ рд░рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рдордпрдХреНрд╖реЗрддреНрд░ рдХреЛ рдПрдХ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдмрдирд╛рдП рд░рдЦреЗрдВ, рдпрд╛ рдЗрд╕реЗ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЗ рд╕рд╛рде рд╕рд╣реЗрдЬреЗрдВред

рдареАрдХ рдпрд╣реА рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЯрд╛рдЗрдордЬрд╝реЛрди рдПрдХ рд╕реЗрдЯрд┐рдВрдЧ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреА рдЧрдИ рддрд╛рд░реАрдЦ рд╣реИред

рдЪреВрдВрдХрд┐ рдмреИрдХрдПрдВрдб рдПрдкреАрдЖрдИ рдореЗрд░реЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реИ, рдореИрдВ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдСрдлрд╕реЗрдЯ рдХреЗ рдмрд┐рдирд╛, рддрд╛рд░реАрдЦ рдХрд╛ рдХрдо рд╕рдВрд╕реНрдХрд░рдг рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛ред

рд▓реЗрдХрд┐рди, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдкрд▓.рдЬреЗрдПрд╕ рдореЗрдВ рдРрд╕рд╛ рдХреБрдЫ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ:

moment(somDateTime).format({ formatWithDeviceTimezone: true })

рдпрд╛ рддрд░рд╣ :)

рдЬрд╣рд╛рдВ formatWithDeviceTimezone рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реИред

рд╡реИрд╕реЗ рднреА, рдзрдиреНрдпрд╡рд╛рдж, рдЕрдм рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВред

рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ parseZone :

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмреАрдПрд╕рдЯреА (рдпреВрдЯреАрд╕реА + 1) рдореЗрдВ рд▓реЛрдХреЗрд▓ рдЯрд╛рдЗрдордЬрд╝реЛрди рдХреЗ рд▓рд┐рдП

moment.parseZone("2018-10-10T13:00:00+11:00").format(); // "2018-10-10T13:00:00+11:00"
moment.parseZone("2018-10-10T13:00:00+11:00").local().format(); // "2018-10-10T03:00:00+01:00"
moment.parseZone("2018-10-10T13:00:00+11:00").utc().format(); // "2018-10-10T02:00:00Z"
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

paulyoung picture paulyoung  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tanepiper picture tanepiper  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

IbraheemAlSaady picture IbraheemAlSaady  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ninigix picture ninigix  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

BonBonSlick picture BonBonSlick  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ