рдореБрджреНрджреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг рдФрд░ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо:
рдорд╛рди рд▓реЗрдВ рдХрд┐ рдореБрдЭреЗ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдмреИрдХрдПрдВрдб рд╕реЗ рдПрдХ рддрд┐рдерд┐ рдорд┐рд▓реА рд╣реИ:
"2018-10-10T13:00:00+11:00"
рдореИрдВ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдФрд░ рд╕реНрд╡рд░реВрдкрдг рдХреЗ рдмрд╛рдж рджреГрд╢реНрдпрдкрдЯрд▓ рдореЗрдВ рдХреНрдпрд╛ рджреЗрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ:
10-10-2018 1.00 PM
рдореБрдЭреЗ рдХреНрдпрд╛ рдорд┐рд▓рд╛:
10-10-2018 5.00 AM
рдореБрдЭреЗ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд╕рд┐рд╕реНрдЯрдо рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреНрдпрд╛ рд╣реИред рдореИрдВ рдпреВрдЯреАрд╕реА рд╕рдордп рднреА рдирд╣реАрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ред рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдХреГрдкрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рднреА рдЪрд░реЛрдВ рдХреЗ рдорд╛рди рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВред
рдКрдкрд░ рджреЗрдЦреЛред
рд╡рд╛рддрд╛рд╡рд░рдг:
рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдпрд╣ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рдореБрджреНрджрд╛ рд╣реИ, рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ!
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"
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
parseZone
:рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмреАрдПрд╕рдЯреА (рдпреВрдЯреАрд╕реА + 1) рдореЗрдВ рд▓реЛрдХреЗрд▓ рдЯрд╛рдЗрдордЬрд╝реЛрди рдХреЗ рд▓рд┐рдП