Rrule: рдбреЗрд▓рд╛рдЗрдЯ рд╕реЗрд╡рд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди "рд╕рдордпрдХреНрд╖реЗрддреНрд░ рд╕рдорд░реНрдерди" рдХреЗ рдмрд╛рд╡рдЬреВрдж рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдирд╡ре░ 2018  ┬╖  21рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jakubroztocil/rrule

рдореИрдВ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (v2.5.6) рдХреЗ рдлреНрд░рдВрдЯ-рдПрдВрдб рдкрд░ рдмреИрдХ-рдПрдВрдб рдкрд░ рд╕рдордХрдХреНрд╖ PHP рд▓рд╛рдЗрдмреНрд░реЗрд░реА (v2.3.3) рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рддреБрд▓рдирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдбреЗрд▓рд╛рдЗрдЯ рд╕реЗрд╡рд┐рдВрдЧ рдЪреЗрдВрдЬ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╕рдВрдЧрддрд┐ рд╣реИ, рдФрд░ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ PHP рд╡рд░реНрдЬрди рдЗрд╕реЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╣реИрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИред

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:

America/Denver рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рд░рд╡рд┐рд╡рд╛рд░, 4 рдирд╡рдВрдмрд░, 2018 рдХреЛ рдПрдХ рджрд┐рди рдХреЗ рдЙрдЬрд╛рд▓реЗ рдХреА рдмрдЪрдд рд╕реНрд╡рд┐рдЪ рд╣реЛрддрд╛ рд╣реИ (GMT-6 рд╕реЗ GMT-7 рддрдХ рдЬрд╛ рд░рд╣рд╛ рд╣реИ)ред рддреЛ рдЖрдЗрдП 1 рдирд╡рдВрдмрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реЛрдо, рдмреБрдз, рдЧреБрд░реБ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реБрдП рджреЛрдкрд╣рд░ 1 рдмрдЬреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдПрдХ рдЖрд╡рд░реНрддреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЬреЛ рд╕рдордп рд╕реНрд╡рд┐рдЪ рд╕реЗ рдкрд╣рд▓реЗ рд╣реИ:

RRule.fromString(
  "DTSTART;TZID=America/Denver:20181101T190000;\n"
  + "RRULE:FREQ=WEEKLY;BYDAY=MO,WE,TH;INTERVAL=1;COUNT=7"
).all()

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рднреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпрд╛рдВ рджреЛрдкрд╣рд░ 1:00 рдмрдЬреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдВрдЧреАред (рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдореИрдВ рд▓рдХреНрд╕рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдпрд╣ рдХрд╣рддреЗ рд╣реБрдП рдХреБрдЫ рднреА рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдореБрдЭреЗ рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдорд╛рди рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдпрд╛рд░реНрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ "рд╕реНрдерд╛рдкрд┐рдд" рд╣реИред)

рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо (рд╕рднреА 13:00:00 рдмрдЬреЗ рд╕реЗ рд╢реБрд░реВ):

(7)┬а[
    Thu Nov 01 2018 13:00:00 GMT-0600 (Mountain Daylight Time),
    Mon Nov 05 2018 13:00:00 GMT-0700 (Mountain Standard Time),
    Wed Nov 07 2018 13:00:00 GMT-0700 (Mountain Standard Time),
    Thu Nov 08 2018 13:00:00 GMT-0700 (Mountain Standard Time),
    Mon Nov 12 2018 13:00:00 GMT-0700 (Mountain Standard Time),
    Wed Nov 14 2018 13:00:00 GMT-0700 (Mountain Standard Time),
    Thu Nov 15 2018 13:00:00 GMT-0700 (Mountain Standard Time)
]

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо:

(7)┬а[
    Thu Nov 01 2018 13:00:00 GMT-0600 (Mountain Daylight Time),
    Mon Nov 05 2018 12:00:00 GMT-0700 (Mountain Standard Time), <-- Should be 13:00:00
    Wed Nov 07 2018 12:00:00 GMT-0700 (Mountain Standard Time), <-- same
    Thu Nov 08 2018 12:00:00 GMT-0700 (Mountain Standard Time), <-- same
    Mon Nov 12 2018 12:00:00 GMT-0700 (Mountain Standard Time), <-- same
    Wed Nov 14 2018 12:00:00 GMT-0700 (Mountain Standard Time), <-- same
    Thu Nov 15 2018 12:00:00 GMT-0700 (Mountain Standard Time)  <-- same
]

рдЬрдм рдореИрдВрдиреЗ PHP рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХреА, рддреЛ рдкрд░рд┐рдгрд╛рдо рдКрдкрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдерд╛ , рдЕрдореЗрд░рд┐рдХрд╛/рдбреЗрдирд╡рд░ рдЯрд╛рдЗрдордЬрд╝реЛрди рдореЗрдВ 13:00:00 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде, рдпреВрдЯреАрд╕реА рдирд╣реАрдВ ред

рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА:

  • рд╕рдВрд╕реНрдХрд░рдг 2.5.6
  • рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ 10.13.6
  • рдХреНрд░реЛрдо 70
  • рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рдиреАрдп рд╕рдордп MST рд╣реИ (рдЕрдореЗрд░рд┐рдХрд╛/рдбреЗрдирд╡рд░, GMT-7)

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЯрд╛рдЗрдкреЛ рдареАрдХ рдХрд░реЗрдВ

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

рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреЛрдИ рдХрдВрд╕реЛрд▓ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВ? рдЙрджрд╛рд╣рд░рдг:

'Using TZID without Luxon available is unsupported. Returned times are in UTC, not the requested time zone'

рд▓рдХреНрд╕реЙрди optionalDependencies рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЗ node_modules рдореЗрдВ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдиреНрдпрдерд╛ рдирд╣реАрдВред

рдЬрдм рдореИрдВ рдЖрдкрдХрд╛ рдХреЛрдб рд░реВрд▓ рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдореЗрдВ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ рдорд┐рд▓рддрд╛ рд╣реИ:

      [
        [Date: 2018-11-01T19:00:00.000Z]
        [Date: 2018-11-05T19:00:00.000Z]
        [Date: 2018-11-07T19:00:00.000Z]
        [Date: 2018-11-08T19:00:00.000Z]
        [Date: 2018-11-12T19:00:00.000Z]
        [Date: 2018-11-14T19:00:00.000Z]
        [Date: 2018-11-15T19:00:00.000Z]
      ]

рдореИрдВ рдпрд╣реА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдирд╡рд░ рд╕рдордпрдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛рдиреЗ рдХрд╛ рд╕рдордп 1900 рд╣реИред (рдЪреВрдВрдХрд┐ рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдФрд░ PHP рдирд╣реАрдВ рд╣реИ, рд╣рдо рдЖрдкрдХреЛ рдЖрдкрдХреЗ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдЯрд╛рдЗрдордЬрд╝реЛрди рдпрд╛ рдпреВрдЯреАрд╕реА рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЯрд╛рдЗрдордЬрд╝реЛрди рдореЗрдВ Date рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпреВрдЯреАрд╕реА рд╡рд╣ рд╣реИ рдЬреЛ рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣рд░ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред)

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

рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреЛрдИ рдХрдВрд╕реЛрд▓ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдорд┐рд▓ рд░рд╣реА рд╣реИрдВ? рдЙрджрд╛рд╣рд░рдг:

'рд▓рдХреНрд╕реЙрди рдЙрдкрд▓рдмреНрдз рдХреЗ рдмрд┐рдирд╛ TZID рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдорд░реНрдерд┐рдд рд╣реИред рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╕рдордп рдпреВрдЯреАрд╕реА рдореЗрдВ рд╣реИ, рдЕрдиреБрд░реЛрдзрд┐рдд рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдирд╣реАрдВ'

рдХреЛрдИ рдХрдВрд╕реЛрд▓ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд▓рдХреНрд╕рди рдареАрдХ рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЬрд╣рд╛рдБ рддрдХ рдЯрд╛рдЗрдордЬрд╝реЛрди рдХреА рдмрд╛рдд рд╣реИ, рдореБрдЭреЗ рдЕрдкрдирд╛ рдХреЛрдб рд╕реАрдзреЗ Chrome devtools рдХрдВрд╕реЛрд▓ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк MST/DST рдорд┐рд▓рддрд╛ рд╣реИред

рдЪрд░рдг: рдХреНрд░реЛрдо рдЦреЛрд▓реЗрдВ -> RRule рдФрд░ Luxon рдХреЗ рд╕рд╛рде рдкреЗрдЬ рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░реЗрдВ -> Cmd+Opt+I -> "Console" tab -> рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕реНрдирд┐рдкреЗрдЯ рдХреЛ рдиреАрдЪреЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ -> рдПрдВрдЯрд░ рдХрд░реЗрдВ

рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ рдпреВрдЯреАрд╕реА рддрд┐рдерд┐рдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реНрдерд╛рдиреАрдп рддрд┐рдерд┐рдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ред

рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛? рд╡рд╣ рдмрджрд▓рд╛рд╡ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛? рдХреЗрд╡рд▓ UTC рддрд┐рдерд┐рдпреЛрдВ рдХреЛ рд▓реМрдЯрд╛рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рджрд┐рди рдХреЗ рдЙрдЬрд╛рд▓реЗ рдХреА рдмрдЪрдд рд╡рд┐рд╕рдВрдЧрддрд┐ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ! рдПрдХ рдШрдЯрдирд╛ рдЬреЛ рд╣рдореЗрд╢рд╛ 13:00 рдпреВрдЯреАрд╕реА рдкрд░ рд╣реЛрддреА рд╣реИ, рдЗрд╕ рдмрд╛рдд рдХреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдирд╛ рджрд┐рди рдХреЗ рдЙрдЬрд╛рд▓реЗ рдмрдЪрдд рд╕реНрд╡рд┐рдЪ рд╕реЗ рдкрд╣рд▓реЗ/рдмрд╛рдж рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕рдордп рдкрд░ рд╢реБрд░реВ рд╣реЛрдЧреАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╡рд╛рдкрд╕ рд▓реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рдХреЛрдИ рдЕрдиреНрдп рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рд╕реЗ рдбреЗрд▓рд╛рдЗрдЯ рд╕реЗрд╡рд┐рдВрдЧреНрд╕ рдХрд╛ рд╣рд┐рд╕рд╛рдм рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдпреВрдЯреАрд╕реА рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╕рднреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЖрд╡рд░реНрддреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдШрдЯрдирд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣реЛрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рджрд┐рди рдХреЗ рдЙрдЬрд╛рд▓реЗ рдХреА рдмрдЪрдд рдПрдХ рдЪреАрдЬ рд╣реИред

рджрд░рдЕрд╕рд▓, рдореБрдЭреЗ рдХреНрд░реЛрдо рд╕реЗ рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдиреЛрдб рд╕реЗ рдХрд░рддрд╛ рд╣реВрдВред

рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдкрдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ "рдЕрдкреЗрдХреНрд╖рд┐рдд" рдЖрдЙрдЯрдкреБрдЯ рд╡рд╣ рд╣реИ рдЬреЛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╡реЗ рд╕рдордп рдЧрд▓рдд рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рджрд┐рдП рдЧрдП рд╕реНрдерд╛рдиреАрдп рд╕рдордп рдореЗрдВ рд╣рд░ рдмрд╛рд░ TZ рдСрдлрд╝рд╕реЗрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ _рдХреНрдпрд╛_рд╕рд╣реА_рд╣реЛрдЧрд╛ред рддрдм рд╕рднреА рд╕рдордп 19:00 рдмрдЬреЗ рд╣реЛрдВрдЧреЗред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ RRule UTC рдореЗрдВ рдбреАрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреНрдпреЛрдВ UTC рдХреЗ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдмрдЧ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рдЖрдк рдХрд░рддреЗ рд╣реИрдВ:

const dates = RRule.fromString(
  "DTSTART;TZID=America/Denver:20181101T190000;\n"
  + "RRULE:FREQ=WEEKLY;BYDAY=MO,WE,TH;INTERVAL=1;COUNT=7"
).all()
dates.map((date) => date.toISOString())

рдЖрдк рдкрд░рд┐рдгрд╛рдореА ISO рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рд╕рд╣реА рджрд┐рдирд╛рдВрдХ рдФрд░ рд╕рдордп рдХреЗ рд╕рд╛рде рджреЗрдЦреЗрдВрдЧреЗред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреНрд░реЛрдо рдпреВрдЯреАрд╕реА рдореЗрдВ рддрд╛рд░реАрдЦреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

> new Date(Date.UTC(2016, 10, 5))
Fri Nov 04 2016 17:00:00 GMT-0700 (Pacific Daylight Time)
// ^ I asked for a date in UTC, not in PDT!

RRule рджреБрдирд┐рдпрд╛ рдореЗрдВ _рд╕рднреА рд╕рдордп рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╕реНрдерд╛рдиреАрдп рд╕рдордп рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Luxon рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рд╕реНрдерд╛рдиреАрдп рд╕рдордпрдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдПред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпреВрдЯреАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ: рдпрджрд┐ рдЯрд╛рдЗрдордЬрд╝реЛрди рдХреЛрдб рдЖрдкрдХреЗ рд╕реНрдерд╛рдиреАрдп рдЯрд╛рдЗрдордЬрд╝реЛрди рдХреЗ рд▓рд┐рдП "рд╕рд╣реА" рддрд┐рдерд┐рдпрд╛рдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдПрдХ рдЕрд▓рдЧ рдЯрд╛рдЗрдордЬрд╝реЛрди ( TZID рдкрд░рдо рдХреЗ рд╕рд╛рде рджрд┐рдпрд╛ рдЧрдпрд╛) рдореЗрдВ рддрд┐рдерд┐рдпрд╛рдВ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдорд┐рд▓реЗрдЧрд╛ рдмреЗрддрд╣рд╛рд╢рд╛ рдЧрд▓рдд рдкрд░рд┐рдгрд╛рдоред рд╣рдо "рдпреВрдЯреАрд╕реА рддрд┐рдерд┐рдпреЛрдВ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдпреВрдЯреАрд╕реА рдореЗрдВ рдбреАрдПрд╕рдЯреА рдЧрдгрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рд╣рдо рдирд╣реАрдВ рд╣реИрдВ, рдЖрдк рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд╣реА рдбреАрдПрд╕рдЯреА рдЧрдгрдирд╛рдУрдВ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдкреЗрдХ рдореЗрдВ рдЯрд╛рдЗрдордЬрд╝реЛрди рдмрд╣реБрдд рд╣реА рднрдпрд╛рдирдХ рд╣реИрдВ рдЯреВрдЯрд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдпреВрдЯреАрд╕реА рдЙрдкрд▓рдмреНрдз "рддрдЯрд╕реНрде" рддрд┐рдерд┐ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рдмрд╕реЗ рдХрд░реАрдм рд╣реИред рдореБрдЭреЗ рдЦреЗрдж рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реВрдВ)ред

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд _is_ рдХреНрдпрд╛ рд╣реИред рдореИрдВ рдЖрдкрд╕реЗ рдЕрдм рдЪрд▓ рд░рд╣реЗ рдиреЛрдб рдХрдВрд╕реЛрд▓ рдореЗрдВ, рдпрд╛ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдирдореВрдирд╛ рдХреЛрдб рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реВрдБрдЧрд╛ред рдЖрдк рдмрд╣реБрдд рдЕрд▓рдЧ (рдФрд░ рд╕рд╣реА) рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВрдЧреЗред

рддреЛ рдпрд╣рд╛рдВ рдЕрд╕рд▓реА рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдХреНрд░реЛрдо рдореЗрдВ рднреНрд░рдорд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдореБрдЭреЗ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреИрд╕реЗ рдХрд░реЗрдВред рдЬреЛ рдореИрдВ _can_ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рд╡рд╛рддрд╛рд╡рд░рдг рдПрдХ рд╣реА рдЖрдИрдПрд╕рдУ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред

@davidgoli рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рдореЗрд░рд╛ рдореВрд▓ рдХреЛрдб рдЪрд▓рд╛рддреЗ рд╕рдордп рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд░рд┐рдгрд╛рдо рдЕрдВрддрддрдГ рдПрдХ рд╣реА рд╕рдордп рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдпреВрдЯреАрд╕реА рд╕рдордп рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдХреНрд░реЛрдо рдореЗрдВ рдЗрд╕реЗ America/Denver рд╕рдордп (рдпрд╛ рд╢рд╛рдпрдж рдЖрдкрдХрд╛ рд╕реНрдерд╛рдиреАрдп рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдЬреЛ рднреА рд╣реЛ) рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдкрдХрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ "рдЕрдкреЗрдХреНрд╖рд┐рдд" рдЖрдЙрдЯрдкреБрдЯ рд╡рд╣ рд╣реИ рдЬреЛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╡реЗ рд╕рдордп рдЧрд▓рдд рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рд╕рд╣реА рд╣реЛрдЧрд╛ рд╡рд╣ рд╕рдордп рдЬрдм рдЖрдк рджрд┐рдП рдЧрдП рд╕реНрдерд╛рдиреАрдп рд╕рдордп рдореЗрдВ рд╣рд░ рдмрд╛рд░ TZ рдСрдлрд╝рд╕реЗрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рддрдм рд╕рднреА рд╕рдордп 19:00 рдмрдЬреЗ рд╣реЛрдВрдЧреЗред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ RRule UTC рдореЗрдВ рдбреАрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреНрдпреЛрдВ UTC рдХреЗ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдмрдЧ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдХрд┐ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП 19:00 UTC рд╕рдордп рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдорд╛рди рд▓реЗрдВ рдХрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд╛рди рдкрд░ America/Denver рдЯрд╛рдЗрдордЬрд╝реЛрди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмреБрдзрд╡рд╛рд░ рдХреЛ рджреЛрдкрд╣рд░ 1 рдмрдЬреЗ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд╛рди рдкрд░ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдИрд╡реЗрдВрдЯ рдХреЛ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ - рдЪрд╛рд╣реЗ рд╡рд╣ рд╕рд╛рд▓ рдХрд╛ рдХреЛрдИ рднреА рд╕рдордп рдХреНрдпреЛрдВ рди рд╣реЛ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╣рд░ рдмреБрдзрд╡рд╛рд░ рдХреЛ рджреЛрдкрд╣рд░ 1 рдмрдЬреЗ рдЬрдм рднреА рдмреБрдзрд╡рд╛рд░ рдХреЛ рджреЛрдкрд╣рд░ 1 рдмрдЬреЗ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рдШрдЯрдирд╛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реЛрддреА рд╣реИред рджреЛрдкрд╣рд░ 12 рдмрдЬреЗ рдирд╣реАрдВ, рджреЛрдкрд╣рд░ 2 рдмрдЬреЗ рдирд╣реАрдВред рдЕрдореЗрд░рд┐рдХрд╛/рдбреЗрдирд╡рд░ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рджреЛрдкрд╣рд░ 1 рдмрдЬреЗред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд┐рдпрдо рдпреВрдЯреАрд╕реА рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░ рд░рд╣рд╛ рд╣реИ -- рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрдм рдПрдХ рд╕рдордпрдХреНрд╖реЗрддреНрд░ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ, рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдХрд╣ рд░рд╣рд╛ рд╣реИ, "рдУрд╣, 1:00 рдмрдЬреЗ рдЕрдореЗрд░рд┐рдХрд╛/рдбреЗрдирд╡рд░ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди 19:00 рд╣реИред рдЗрд╕рд▓рд┐рдП, 19:00 рдкреВрд░реЗ рд╕рд╛рд▓ рдЕрдореЗрд░рд┐рдХрд╛/рдбреЗрдирд╡рд░ рдореЗрдВ рд╣рдореЗрд╢рд╛ рджреЛрдкрд╣рд░ 1:00 рдмрдЬреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред " рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИред 4 рдирд╡рдВрдмрд░, 2018 рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рд╕рдЪ рд╣реИ, рд▓реЗрдХрд┐рди 4 рдирд╡рдВрдмрд░ рдХреЗ рдмрд╛рдж, рдЕрдореЗрд░рд┐рдХрд╛/рдбреЗрдирд╡рд░ рдбреЗрд▓рд╛рдЗрдЯ рд╕реЗрд╡рд┐рдВрдЧ рдЯрд╛рдЗрдо рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЙрд╕ рд╕рдордп, 19:00 рдпреВрдЯреАрд╕реА рд╕рдордп рдЕрдм тАЛтАЛ12:00 рдмрдЬреЗ рдЕрдореЗрд░рд┐рдХрд╛/рдбреЗрдирд╡рд░ рд╕рдордп рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддрд╛ рд╣реИ ред рддреЛ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдмрддрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдирд╛ рджреЛрдкрд╣рд░ 1 рдмрдЬреЗ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рджреЛрдкрд╣рд░ 12 рдмрдЬреЗ рд╣реЛ рд░рд╣реА рд╣реИред

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, 1pm рдЕрдореЗрд░рд┐рдХрд╛/рдбреЗрдирд╡рд░ рдпрд╛ рддреЛ 19:00 рдпрд╛ 20:00 UTC рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдбреЗрд▓рд╛рдЗрдЯ рд╕реЗрд╡рд┐рдВрдЧ рдЯрд╛рдЗрдо рдкрд░ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ, рдФрд░ рд╕рд╣реА рдкреБрдирд░рд╛рд╡рд░реНрддрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП rrule рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ 19: 00 рд╕рд╛рд▓ рднрд░ рдХрд╛ рд╕рд╣реА рд╕рдордп рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдирд┐рдпрдо рдорд┐рдердХ рдореЗрдВ рдЦрд░реАрдж рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдпрд╣ рд╣реИ рдХрд┐ рддрд╛рд░реАрдЦреЛрдВ рдФрд░ рд╕рдордп рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рджреМрд░рд╛рди рдпреВрдЯреАрд╕реА рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдРрд╕реЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ рдЬрд╣рд╛рдВ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рдЙрджрд╛рд╣рд░рдг (рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд╛рди рдкрд░ рднрд╡рд┐рд╖реНрдп рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рджреЛрд╣рд░рд╛рдирд╛) рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред


рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдореИрдВ рдпреВрдЯреАрд╕реА рдореЗрдВ рд╕рдордп рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рдирд┐рдпрдо рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╡рд╣ рд╕рдордп рджрд┐рдП рдЧрдП рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рдПрдХ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ 19:00 рдпреВрдЯреАрд╕реА рд╕реНрд╡рд┐рдЪ рдХреЛ 20:00 рдпреВрдЯреАрд╕реА рдкрд░ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдкрд░рд┐рдгрд╛рдо рд╕реЗрдЯ рдореЗрдВ рдХреБрдЫ рдмрд┐рдВрджреБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред

Lemme рдпрд╣рд╛рдБ рдмреИрдХ рдЕрдк - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕рдорд╕реНрдпрд╛ рд╣реИред

RRule _always_ JS "UTC" рджрд┐рдирд╛рдВрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рддрд┐рдерд┐рдпрд╛рдВ рдпреВрдЯреАрд╕реА рд╕рдордп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВред рдмрд▓реНрдХрд┐, рдПрдХрдорд╛рддреНрд░ рд╡рд┐рдХрд▓реНрдк - рд╕реНрдерд╛рдиреАрдп рддрд┐рдерд┐рдпреЛрдВ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг - рдпрд╣ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ 0 рдЯрд╛рдЗрдордЬрд╝реЛрди рдСрдлрд╝рд╕реЗрдЯ рд╡рд╛рд▓реА _only_ JS рддрд┐рдерд┐рдпрд╛рдВ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдЧрдгрд┐рдд рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдпреЛрдЧреНрдп рд╣реИрдВред рдЗрд╕рдХрд╛ рднреНрд░рд╛рдордХ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпреЗ рд╕рдордп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпреВрдЯреАрд╕реА рдореЗрдВ рд╕рдордп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдЬрдм рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ TZID рдкрд░рдо рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдП рдЧрдП рдЯрд╛рдЗрдордЬрд╝реЛрди рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рддреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ, рдЗрдЪреНрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдкрдХреЛ 19:00 рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реА рддрд┐рдерд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЙрд╕ рд╕рдордп рдХреЛ рдбреЗрдирд╡рд░ рд╕рдордп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдерд╛, рдпрд╣ рдбреЗрдирд╡рд░ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реЛрдЧрд╛ред рдЖрдк рдЗрд╕ рддрдереНрдп рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ рдХрд┐ рдпрд╣ рддрд┐рдерд┐ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреА рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдпреВрдЯреАрд╕реА рддрд┐рдерд┐ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдРрд╕реА рддрд┐рдерд┐ рд╣реИ рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдЗрд╕ рдЬреНрдЮрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ рдХрд┐ рдЗрд╕ рдирд┐рдпрдо рдореЗрдВ 19:00 рдХреЛ рдбреЗрдирд╡рд░ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рд╕рдордп рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдирд╡рд░ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рд╣реИред

рдпрд╣ рддрдм рд╕реНрдкрд╖реНрдЯ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдХреЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд╛рд╣рд░ рдЯрд╛рдЗрдордЬрд╝реЛрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЬрд╝реЛрди рдирд╛рдо America/New_York рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ RRule рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рджрд┐рдирд╛рдВрдХ 17:00 рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЧрдП рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреА рдорд╢реАрди рдХреЗ рдЯрд╛рдЗрдордЬрд╝реЛрди (рдбреЗрдирд╡рд░) рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рд╕рдордп рд╣реИ рдЬрдм рдпрд╣ 19 рд╣реИ :00 рдЕрдиреБрд░реЛрдзрд┐рдд рд╕рдордп рдХреНрд╖реЗрддреНрд░ (рдиреНрдпреВрдпреЙрд░реНрдХ) рдореЗрдВред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд┐рд╕реА рддрд┐рдерд┐ рдХреЛ "рдкрд┐рди" рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╣рдореЗрд╢рд╛ рд╕рд╣реА рддрд┐рдерд┐ рдФрд░ рд╕рдордп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рдХреБрдЫ рднреА рд╣реЛ, рдФрд░ рдЖрдк рдЗрд╕ рддрдереНрдп рдХреЛ рддреНрдпрд╛рдЧ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рддрд┐рдерд┐ рд╕реНрд╡рдпрдВ рдХреЛ рдпреВрдЯреАрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреА рд╣реИред рдЬрдм RRule рдореЗрдВ рдЯрд╛рдЗрдордЬрд╝реЛрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╕рдордп рд╣реЛрддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдЖрдкрдХреЛ 19:00 рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реА рд╕реНрдерд╛рдиреАрдп рд╕рдордп рджреЗрддрд╛ рд╣реИ (рднрд▓реЗ рд╣реА рдЙрд╕ рддрд┐рдерд┐ рдХреЛ рдпреВрдЯреАрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдирд╡рд░ рд╕рдордп рд╣реИ)ред

рдХреНрдпрд╛ рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ? рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдФрд░ рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдПрдХ рдмрд╛рд░ рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд░реНрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдмреЗрд╣рддрд░ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рдЪреАрдЬ рдЬреЛ рдореИрдВ рдЗрд╕рд╕реЗ рддрд▓рд╛рд╢рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╡рд╣ рд╣реИ рд▓рдХреНрд╕реЙрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдгрд╛рдореА рддрд┐рдерд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдирд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдЖрдкрдХреА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдХрдард┐рди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдЧрд▓рддрдлрд╣рдореА рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред рдХреНрд░реЛрдо рдореБрджреНрджрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдирдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмреБрд░реА рдЦрдмрд░ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╢рд┐рдкрд┐рдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдореБрджрд╛рдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

@shorlbeck рдпрд╣ рдЕрдВрддрд░, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ, рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рджреЗрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ:

diff --git a/src/datewithzone.ts b/src/datewithzone.ts
index 8ae3ed0..d9b917c 100644
--- a/src/datewithzone.ts
+++ b/src/datewithzone.ts
@@ -38,7 +38,10 @@ export class DateWithZone {

       const rezoned = datetime.setZone(this.tzid!, { keepLocalTime: true })

-      return rezoned.toJSDate()
+      return rezoned
+        .toUTC()
+        .setZone('local', { keepLocalTime: true })
+        .toJSDate()
     } catch (e) {
       if (e instanceof TypeError) {
         console.error('Using TZID without Luxon available is unsupported. Returned times are in UTC, not the requested time zone')
diff --git a/test/rrule.test.ts b/test/rrule.test.ts
index 7774b8a..a794e02 100644
--- a/test/rrule.test.ts
+++ b/test/rrule.test.ts
@@ -3804,4 +3804,17 @@ describe('RRule', function () {
     expect(() => rule.between(invalidDate, validDate)).to.throw('Invalid date passed in to RRule.between')
     expect(() => rule.between(validDate, invalidDate)).to.throw('Invalid date passed in to RRule.between')
   })
+
+  it('#300', () => {
+    const rule = RRule.fromString(
+      "DTSTART;TZID=America/Denver:20181101T190000;\n"
+      + "RRULE:FREQ=WEEKLY;BYDAY=MO,WE,TH;INTERVAL=1;COUNT=3"
+    )
+
+    expect(rule.all()).to.deep.equal([
+      DateTime.utc(2018, 11, 2, 1, 0, 0).toJSDate(),
+      DateTime.utc(2018, 11, 6, 2, 0, 0).toJSDate(),
+      DateTime.utc(2018, 11, 8, 2, 0, 0).toJSDate(),
+    ])
+  })
 })

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рдХрд╛ рдпрд╣реА рддрд░реАрдХрд╛ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ "рдлреНрд▓реЛрдЯрд┐рдВрдЧ" рд╕рдордп рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрд╢рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕реНрдерд╛рдиреАрдп рдЯрд╛рдЗрдордЬрд╝реЛрди (0 рдСрдлрд╝рд╕реЗрдЯ рдХреЗ рд╕рд╛рде) рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддрд╛ рд╣реИред rrule рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдИ рдЧрдИ рддрд┐рдерд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдЧреЗрдЯреНрдЯрд░ getUTC* рдЧреЗрдЯрд░реНрд╕ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдореВрд▓ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рддрд┐рдерд┐ рдкрд░ getUTCHours() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдорд┐рд▓реЗрдЧрд╛ рд╕рд╣реА рдШрдВрдЯреЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреНрд░реЛрдо рдореЗрдВ рднреАред

рдореИрдВ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЫрджреНрдо- "рдпреВрдЯреАрд╕реА" (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рдлреНрд▓реЛрдЯрд┐рдВрдЧ") рдХреЗ рдХреБрдЫ рд╣рдж рддрдХ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдлрд┐рдХреНрд╕ рд╕реЛрдЪрдиреЗ рдХреА рдУрд░ рдЭреБрдХрд╛ рд░рд╣рд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЗрд╕ рдкрд░ рд░рд╛рдЬреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВред

рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдФрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рд░реАрдбрдореЗ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рдВрднрд╡рддрдГ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реВрдВред

рдЙрддреНрддрд░ рдФрд░ рд╡рд┐рд╕реНрддреГрдд рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдХрднреА рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реБрдЖред

рджрд┐рдирд╛рдВрдХ рдФрд░ рд╕рдордп рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдХрд╛рдлреА рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╡реЗ рджрд┐рдирд╛рдВрдХ рд╕рдордп рдпрд╛ рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпреВрдЯреАрд╕реА рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдерд╛рдиреАрдп рд╕рдордп рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрднреА-рдХрднреА рдпреВрдЯреАрд╕реА рд╕рдордп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпреВрдЯреАрд╕реА рд╕рдордп рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЖрдЬ рдкреВрд░рд╛ рджрд┐рди рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдмрд┐рддрд╛рдпрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдЗрддрдирд╛ рдЙрд▓реНрдЯрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рджрд┐рдорд╛рдЧ рдХреЛ рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓рдкреЗрдЯ рдирд╣реАрдВ рд╕рдХрддрд╛ред

рдЬрдм рднреА рдореИрдВ рдХреЛрдб рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ "рдпреВрдЯреАрд╕реА" рддрд┐рдерд┐ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рддреЛ рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпреВрдЯреАрд╕реА рд╣реИ рдпрд╛ рд╕рд┐рд░реНрдл рдЫрджреНрдо-рдпреВрдЯреАрд╕реА рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдЖрдк рд╡рд╣рд╛рдВ рдХреНрд░реЛрдо рд╕рдорд╕реНрдпрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХреЛрдб рдХрд░рдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рдмрдирд╛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдореЗрд░реЗ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдореЗрдВ рдореЗрд░рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдмрд░реНрдмрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реИред

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдкреНрд░рд╢реНрди рд╣реИ, рдлрд┐рд░... рдЕрдкрдиреЗ рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ... рд╕рд╣реА UTC рдореЗрдВ, 2018-11-01 19:00:00 рдЕрдореЗрд░рд┐рдХрд╛/рдбреЗрдирд╡рд░ рд╕рдордп (13:00) рдореЗрдВ рджреЛрдкрд╣рд░ 1 рдмрдЬреЗ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдФрд░ рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рджреЛрдкрд╣рд░ 1 рдмрдЬреЗ рдЕрдореЗрд░рд┐рдХрд╛/рдбреЗрдирд╡рд░ рдореЗрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рд╕рд╣реА рд╕рдордп рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ UTC рд╕рд╣реА UTC рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ tzid рдкрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ new Date(Date.UTC(2018, 10, 1, 13, 0, 0)) рдпрд╛ new Date(Date.UTC(2018, 10, 1, 19, 0, 0)) рдореЗрдВ рдкрд╛рд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? (рдЕрдВрддрд░ 13:00 рдмрдирд╛рдо 19:00 рд╣реИ)

рдХреНрдпрд╛ рдпрд╣ рдЫрджреНрдо-рдпреВрдЯреАрд╕реА рдЕрдВрджрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдмрд╛рд╣рд░ рднреА рдЖ рд░рд╣рд╛ рд╣реИ? рдпрд╛ рд╕рдЪ рдпреВрдЯреАрд╕реА рдЕрдВрджрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЫрджреНрдо рдпреВрдЯреАрд╕реА рдмрд╛рд╣рд░ рдЖ рд░рд╣рд╛ рд╣реИ? рдФрд░ рдореИрдВ рдЗрд╕реЗ рдХрднреА рднреА рдордЬрд╝рдмреВрддреА рд╕реЗ рдХреИрд╕реЗ рдпрд╛рдж рд░рдЦ рд╕рдХрддрд╛ рд╣реВрдБ ??

рдЖрдкрдХрд╛ рдирд┐рдпрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ:

DTSTART;TZID=America/Denver:20181101T190000
RRULE:FREQ=WEEKLY;BYDAY=MO,WE,TH;INTERVAL=1;COUNT=7

рд▓реЗрдХрд┐рди RRULE RFC5545 рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ 1900 рдХреЗ рд╕реНрдерд╛рдиреАрдп рд╕рдордп рдХреЗ рд╕рд╛рде рдбреЗрдирд╡рд░ рдЯрд╛рдЗрдордЬрд╝реЛрди рдореЗрдВ рдПрдХ рдирд┐рдпрдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ: https://tools.ietf.org/html/rfc5545#section -3.3.5

For example, the following represents 2:00 A.M. in New York on January 19, 1998:

       TZID=America/New_York:19980119T020000

рдпрджрд┐ рдЖрдк 1300 рд╕реНрдерд╛рдиреАрдп рдбреЗрдирд╡рд░ рд╕рдордп рдкрд░ DTSTART рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрдкрдиреЗ рдирд┐рдпрдо рдореЗрдВ 1300 рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЙрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред (рдареАрдХ рд╣реИ, рдорд╛рдореВрд▓реА рддрдереНрдп рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд┐ рдпрд╣ 1300 рдпреВрдЯреАрд╕реА рд▓реМрдЯрд╛рдПрдЧрд╛ ...)

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, "рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдЯрд╛рдЗрдо" рдкрд░ рдЕрдиреБрднрд╛рдЧ рдкрдврд╝рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ:

FORM #1: DATE WITH LOCAL TIME

      The date with local time form is simply a DATE-TIME value that
      does not contain the UTC designator nor does it reference a time
      zone.  For example, the following represents January 18, 1998, at
      11 PM:

       19980118T230000

      DATE-TIME values of this type are said to be "floating" and are
      not bound to any time zone in particular.  They are used to
      represent the same hour, minute, and second value regardless of
      which time zone is currently being observed.  For example, an
      event can be defined that indicates that an individual will be
      busy from 11:00 AM to 1:00 PM every day, no matter which time zone
      the person is in.  In these cases, a local time can be specified.

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, "рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдЯрд╛рдЗрдо" рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдкреЗрд╢рдХрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ "рд╢реБрджреНрдз" рдХрд╛ рдирд┐рдХрдЯрддрдо рд╡рд┐рдХрд▓реНрдк рд╣реИ, рд╕рдордп рдХреНрд╖реЗрддреНрд░-рд░рд╣рд┐рдд рд╕рдордп рдпреВрдЯреАрд╕реА рд╣реИ, рдЗрд╕рд▓рд┐рдП "рдЫрджреНрдо-рдпреВрдЯреАрд╕реА"ред (рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, rrule рдлреНрд▓реЛрдЯрд┐рдВрдЧ рд╕рдордп рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рди рддреЛ TZID рдФрд░ рди рд╣реА Z UTC рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджрд┐рд╖реНрдЯред)

рдЗрд╕ рдХрдорд┐рдЯрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде UTC рдкрд░ рд╕реНрд╡рд┐рдЪ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рдерд╛: https://github.com/jakubroztocil/rrule/commit/850ed075175eb1acfcbd7b2cddf0606f2b2206f7

рдпрджрд┐ рдЖрдк рдкрд┐рдЫрд▓реА рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ #850ed075 рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдЪреЗрд░реА-рдЪреБрдирддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдЕрд╕рдлрд▓ рджреЗрдЦреЗрдВрдЧреЗред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реИрдХрдбрд╝реЛрдВ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣реЗ рдереЗ рдЬрдм рддрдХ рдХрд┐ рд╕рдВрдкреВрд░реНрдг рд╕реБрдЗрдЯ UTC рдореЗрдВ рдирд╣реАрдВ рдЪрд▓рд╛ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рднрд╡рд┐рд╖реНрдп рдХреА рддрд╛рд░реАрдЦреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдбреАрдПрд╕рдЯреА рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдкрд╛рд░ рд╣реИрдВ, рд╣рдореЗрдВ рдЙрди рддрд╛рд░реАрдЦреЛрдВ рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд░рдирд╛ рдерд╛ рдЬрдм рд╡рд░реНрддрдорд╛рди рдШрдбрд╝реА рдбреАрдПрд╕рдЯреА рдореЗрдВ рдЪрд▓ рд░рд╣реА рдереА рдФрд░ рдлрд┐рд░ рдЧрдгрд┐рдд рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ рдЬреЛ рд╣рдореЗрдВ рдорд╛рдирдХ рд╕рдордп рдореЗрдВ рдбрд╛рд▓ рджреЗрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЧрд▓рдд 1-рдШрдВрдЯреЗ рдХреА рдСрдлрд╕реЗрдЯ рд╣реЛрддреА рд╣реИред рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд╕реНрдерд╛рдиреАрдп рд╕рдордп рджреЗрддрд╛ рд╣реИред рдЕрдм, рд╕рдВрдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рдиреАрдп рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд╛рд░рд┐рдд рд╣реЛрдЧрд╛, рдЗрд╕ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рдХрд┐ рд╕рд╣реА рддрд┐рдерд┐/рдШрдВрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ getUTCDate() / getUTCHour() рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдореИрдВ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд▓рдХреНрд╕рди рдЬреИрд╕реА рдЖрд╡рд╢реНрдпрдХ рддреГрддреАрдп рдкрдХреНрд╖ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЫреЛрдЯрд╛ рдирд╣реАрдВ рд╣реИред

рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдореИрдВ рдЖрдкрдХреЗ рд╕реНрдерд╛рдиреАрдп рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рддрд╛рд░реАрдЦреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

  • рдпрджрд┐ рдЖрдк рдбреЗрдирд╡рд░ рдореЗрдВ рд╣реИрдВ рддреЛ DTSTART;TZID=America/Denver:20181101T130000 рдЖрдкрдХреЛ рдПрдХ рддрд╛рд░реАрдЦ рд▓реМрдЯрд╛рдПрдЧрд╛ рдЬреЛ 1300-0700 (рдорд╛рдирдХ рд╕рдордп) рд╣реИ, рдпрд╛ рдпрджрд┐ рдЖрдк рдпреВрдЯреАрд╕реА рдореЗрдВ рд╣реИрдВ рддреЛ 2000Z
  • рдпрджрд┐ рдЖрдк рдбреЗрдирд╡рд░ рдореЗрдВ рд╣реИрдВ рддреЛ DTSTART=20181101T130000 рдЖрдкрдХреЛ 1300-0700 рдФрд░ рдпрджрд┐ рдЖрдк UTC рдореЗрдВ рд╣реИрдВ рддреЛ 1300Z рджреЗрдВрдЧреЗ
  • рдпрджрд┐ рдЖрдк рдбреЗрдирд╡рд░ рдореЗрдВ рд╣реИрдВ рддреЛ DTSTART=20181101T130000Z рдЖрдкрдХреЛ 0600-0700 рджреЗрдЧрд╛, рдФрд░ рдпрджрд┐ рдЖрдк UTC рдореЗрдВ рд╣реИрдВ рддреЛ 1300Z

рдХреНрдпрд╛ рдпрд╣ рд╡рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЬрд┐рд╕рдХреА рдЖрдк рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╕реНрдерд╛рдиреАрдп рдЬреЗрдПрд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рддрд┐рдерд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рди рддреЛ new Date(...) рдФрд░ рди рд╣реА new Date(Date.UTC(...)) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рджрд┐рдирд╛рдВрдХ-рд╕рдордп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЬреЛ рдЖрдкрдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХреНрд╖реЗрддреНрд░ рд╕реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред

рддреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

new RRule({
  dtstart: new Date(2018, 10, 1, 10, 0, 0),
  tzid: 'America/Denver'
})

рдпрджрд┐ рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди America/Los_Angeles рдореЗрдВ рд╣реИ? рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЬрд╛ рд░рд╣реЗ рд╕рдордп рдФрд░ рдЙрд╕ рд╕рдордп рдореЗрдВ рдЖрдк рдЬрд┐рд╕ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдХреЗ рдмреАрдЪ 1 рдШрдВрдЯреЗ рдХреЗ рдЕрдВрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдЬрд╛рдЧрд░реВрдХ рд╣реЛрдирд╛ рд╣реЛрдЧрд╛ред рддреЛ рдХреНрдпрд╛ рдпрд╣ 11am (рдбреЗрдирд╡рд░ рд╕рдордп, рдЕрдиреБрд░реЛрдзрд┐рдд рдХреНрд╖реЗрддреНрд░) рдпрд╛ 10am рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ( рд▓реЙрд╕ рдПрдВрдЬрд┐рд▓реНрд╕ рд╕рдордп, рдореВрд▓ рдХреНрд╖реЗрддреНрд░)? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдорд▓рд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдкреИрдбреЗрдВрдЯрд┐рдХ рд░реВрдк рд╕реЗ, рдПрдХ Date рдСрдмреНрдЬреЗрдХреНрдЯ ISO рджрд┐рдирд╛рдВрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ DTSTART рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЛрдиреЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ UTC рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЯрд╛рдЗрдордЬрд╝реЛрди рдпрд╛ рдСрдлрд╝рд╕реЗрдЯ рдХреА рдХреЛрдИ рдЕрд╡рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рд╣реИред рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рд╕рдордп рдХреЗ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ _ рд╕рд╣реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ _ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд▓реЙрд╕ рдПрдВрдЬрд┐рд▓реНрд╕ рдореЗрдВ рд╣реИрдВ рдФрд░ рдЖрдк рдбреЗрдирд╡рд░ рдореЗрдВ рд╕рдордп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд░рд┐рд╢реНрддреЗрджрд╛рд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХреА рдЧрдИ рджрд┐рдирд╛рдВрдХ рд╡рд╕реНрддреБ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдСрдлрд╕реЗрдЯ рд▓рд╛рдЧреВ (рдЗрд╕рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдбреЗрдирд╡рд░ рдореЗрдВ рд╕реБрдмрд╣ 11 рдмрдЬреЗ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░реЗрдЧрд╛)ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рдЖрдк рдиреНрдпреВрдпреЙрд░реНрдХ рдХреА рдпрд╛рддреНрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реА рд╕рдордп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ new Date(2018, 10, 1, 13, 0, 0) рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛!

рд╕реНрдерд╛рдиреАрдп рддрд┐рдерд┐рдпреЛрдВ рдХреА рдкреВрд░реА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдЦрд┐рдбрд╝рдХреА рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рдлрд╛рдпрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ; рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреА рдЧрдИ рддрд┐рдерд┐ рдФрд░ рд╕рдордп рдХреЛ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдордп рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рд╣реЛрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред

рдмреЗрд╢рдХ, рдХреНрд░реЛрдо рдЬреИрд╕реЗ рдЗрдВрдЬрдиреЛрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдпрд╣ рдЬрдЯрд┐рд▓ рд╣реИред

рдЕрдкрдиреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рдВрднрд╡рддрдГ рд╡реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

rule.all().map(d => new Date(
    d.getUTCFullYear(),
    d.getUTCMonth(),
    d.getUTCDate(),
    d.getUTCHours(),
    d.getUTCMinutes(),
    d.getUTCMilliseconds()
  ))

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╣реИ рдпрд╛ рдирд╣реАрдВ ...

рд╢реБрдХреНрд░рд┐рдпрд╛! рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд▓ рдЬрдм рдореИрдВ рд╕рдм рдХреБрдЫ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рддреЛ рдореИрдВ рдердХ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЬрд▓ рдЧрдпрд╛ рдерд╛ред рдЕрдм рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВ tzid рдкрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЧрд▓рдд рд╕рдордп рд╕реЗ рдЧреБрдЬрд░ рд░рд╣рд╛ рдерд╛ред

рдЕрдкрдиреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рдВрднрд╡рддрдГ рд╡реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдк рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:

rule.all().map(d => new Date(
    d.getUTCFullYear(),
    d.getUTCMonth(),
    d.getUTCDate(),
    d.getUTCHours(),
    d.getUTCMinutes(),
    d.getUTCMilliseconds()
  ))

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рддрдп рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╣реИ рдпрд╛ рдирд╣реАрдВ ...

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛! рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╢рд╛рдпрдж rule.all() рдФрд░ rule.between() рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрднреА рддрдХ рдПрдХ рдФрд░ рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЙрдкрд░реЛрдХреНрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬрдм рдЖрдк рдпрд╣ рднреА рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореБрдЭреЗ rrulestr() рдпрд╛ RRule.fromString() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рдпрд╛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рддрд╛рд░реАрдЦ рд▓реМрдЯрд╛ рджреА рдЧрдИ рд╣реИ?


рдЕрджреНрдпрддрди: рдЙрдкрд░реЛрдХреНрдд d.getUTCMilliseconds() рдХреЛ d.getUTCSeconds() . рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рддреЛ, рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рддрдм рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдореЗрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЯрд╛рдЗрдордЬрд╝реЛрди рдЕрдиреБрд░реЛрдзрд┐рдд рдЯрд╛рдЗрдордЬрд╝реЛрди рдХреЗ рд╕рдорд╛рди рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдПрдХ рднрдпрд╛рдирдХ рд╕рдордп рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЖрд░рдЖрд░рдпреВрдПрд▓ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдордЬрд╝реЛрди рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдкрд░ рдЕрдиреБрд░реЛрдзрд┐рдд рдЯрд╛рдЗрдордЬрд╝реЛрди рдореЗрдВ рддрд╛рд░реАрдЦреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рд╣рдореЗрд╢рд╛ рдЕрдиреБрд░реЛрдзрд┐рдд рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдордЬрд╝реЛрди рдореЗрдВ рджрд░реНрд╢рд╛рдП рдЧрдП рджрд┐рдирд╛рдВрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг:

  1. рдЕрдкрдиреЗ OS рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдордЬрд╝реЛрди рдХреЛ America/Denver . рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ
  2. рдХреНрд░реЛрдо рджреЗрд╡рдЯреВрд▓ рдХрдВрд╕реЛрд▓ рдореЗрдВ, рджрд░реНрдЬ рдХрд░реЗрдВ:
RRule.fromString(
    "DTSTART;TZID=America/Denver:20181101T130000;\n"
    + "RRULE:FREQ=WEEKLY;BYDAY=MO,WE,TH;INTERVAL=1;COUNT=7"
).all().map(d => new Date(
    d.getUTCFullYear(),
    d.getUTCMonth(),
    d.getUTCDate(),
    d.getUTCHours(),
    d.getUTCMinutes(),
    d.getUTCSeconds()
));

рдкрд░рд┐рдгрд╛рдо рд╕рд╣реА рд╣реИ (рдЬреЛ рдореБрдЭреЗ рдЙрдореНрдореАрдж/рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ):

(7)┬а[Thu Nov 01 2018 13:00:00 GMT-0600 (Mountain Daylight Time), Mon Nov 05 2018 13:00:00 GMT-0700 (Mountain Standard Time), Wed Nov 07 2018 13:00:00 GMT-0700 (Mountain Standard Time), Thu Nov 08 2018 13:00:00 GMT-0700 (Mountain Standard Time), Mon Nov 12 2018 13:00:00 GMT-0700 (Mountain Standard Time), Wed Nov 14 2018 13:00:00 GMT-0700 (Mountain Standard Time), Thu Nov 15 2018 13:00:00 GMT-0700 (Mountain Standard Time)]
  1. OS рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдордЬрд╝реЛрди рдХреЛ America/New_York . рдореЗрдВ рдмрджрд▓реЗрдВ
  2. Chrome devtools рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╕рдорд╛рди рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБред

рдкрд░рд┐рдгрд╛рдо рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдордЬрд╝реЛрди рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

(7)┬а[Thu Nov 01 2018 15:00:00 GMT-0400 (Eastern Daylight Time), Mon Nov 05 2018 15:00:00 GMT-0500 (Eastern Standard Time), Wed Nov 07 2018 15:00:00 GMT-0500 (Eastern Standard Time), Thu Nov 08 2018 15:00:00 GMT-0500 (Eastern Standard Time), Mon Nov 12 2018 15:00:00 GMT-0500 (Eastern Standard Time), Wed Nov 14 2018 15:00:00 GMT-0500 (Eastern Standard Time), Thu Nov 15 2018 15:00:00 GMT-0500 (Eastern Standard Time)]

рд▓реЗрдХрд┐рди рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкрд░рд┐рдгрд╛рдо America/Denver рд╕рдордп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░реЗ, рди рдХрд┐ рдореЗрд░рд╛ рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдордЬрд╝реЛрди, рди рд╣реА рд╕рд╣реА рдпреВрдЯреАрд╕реАред рдореИрдВ рдЗрд╕реЗ America/Denver рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рдкреБрди: рдЬрд╝реЛрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ? рдореИрдВ рд▓рдХреНрд╕рди рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп moment() рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:

RRule.fromString(
    "DTSTART;TZID=America/Denver:20181101T130000;\n"
    + "RRULE:FREQ=WEEKLY;BYDAY=MO,WE,TH;INTERVAL=1;COUNT=7"
).all().map(d => moment(new Date(
    d.getUTCFullYear(),
    d.getUTCMonth(),
    d.getUTCDate(),
    d.getUTCHours(),
    d.getUTCMinutes(),
    d.getUTCSeconds()
)).tz('America/Denver').toDate());

рд▓реЗрдХрд┐рди рдпрд╣ рдиреНрдпреВрдпреЙрд░реНрдХ рдХреЗ рд╕рдордп рдореЗрдВ рд╡рд╣реА рдЪреАрдЬрд╝ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ toDate() рдЗрд╕реЗ рддреБрд░рдВрдд рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдордЬрд╝реЛрди (рдХреНрд░реЛрдо рдореЗрдВ, рдХрдо рд╕реЗ рдХрдо) рдореЗрдВ рд╡рд╛рдкрд╕ рд░рдЦрддрд╛ рд╣реИред

@shorlbeck рдпрджрд┐ рдЖрдк рдзреНрдпрд╛рди рджреЗрдВ, рдПрдордбреАрдЯреА рдФрд░ рдИрдбреАрдЯреА рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдпреВрдЯреАрд╕реА рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рдореЗрд░рд╛ рдкреНрд░рд╢реНрди рд╣реИ: рдХреНрдпрд╛ рдЖрдк рд╡рд╛рдХрдИ TZID рдкрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рд╕рдордп? рдореИрдВ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рд╕рдордп рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ (рдореВрд▓ рд░реВрдк рд╕реЗ рд╡рд╣реА, рд▓реЗрдХрд┐рди DSTART:<datetime> рдХреЗ рдмрдЬрд╛рдп DSTART;TZID=<timezone>:<datetime> рдХреЗ рд╕рд╛рде) рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдордЬрд╝реЛрди рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд╣рдореЗрд╢рд╛ 13:00 рдЙрддреНрдкрдиреНрди рдХрд░реЗред

13:00 рдЫрджреНрдо-рдпреВрдЯреАрд╕реА рдпрд╛рдиреАред рдпрджрд┐ рдЖрдк рдХреНрд░реЛрдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрднреА рднреА рдореЗрд░реА рдкреВрд░реНрд╡ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдиреАрдп рддрд┐рдерд┐ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

@davidgoli рдУрд╣ рд╡рд╛рд╣, рддреБрдо рд╕рд╣реА рд╣реЛред рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ рдХрд┐ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ tzid рдкрд░рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрдм рдореИрдВ рд╕рдордЭ рдЧрдпрд╛ рдХрд┐ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдЯрд╛рдЗрдо/рдЫрджреНрдо-рдпреВрдЯреАрд╕реА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореБрдЭреЗ рдКрдкрд░ рджрд┐рдП рдЧрдП .map() рд╕рдорд╛рдзрд╛рди рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдиреЗ рдореБрдЭреЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ред рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рдЭреВрда рдмреЛрд▓реВрдВрдЧрд╛ рдЕрдЧрд░ рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореИрдВрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ (рд╕рдордпрдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд┐рдирд╛ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рддрд┐рдерд┐рдпрд╛рдВ)? рдпреВрдЯреАрд╕реА рдЯрд╛рдЗрдордЬрд╝реЛрди рдХреЗ рд╕рд╛рде рджреЗрд╢реА рдЬреЗрдПрд╕ рддрд┐рдерд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдпреВрдЯреАрд╕реА рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рдирд╛ рдмреЗрд╣рдж рднреНрд░рдорд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рддрдм рддрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдбреАрдПрд╕рдЯреА рдмрдЧ рд╕реЗ рд╣рд┐рдЯ рди рдХрд░реЗред

рдореИрдВ рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛, рдЪрд▓рд┐рдП рдЗрд╕реЗ "RRuleDate" рдХрд╣рддреЗ рд╣реИрдВ рдЬреЛ (year, month, day, hours?, minutes?, seconds?, milliseconds?) рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ .toDate() рд╡рд┐рдзрд┐ рд╣реИред

рдпрд╣ RRuleDate рд╡рд╣ рд╣реИ рдЬреЛ before() , after() , between() , рдФрд░ all() рд╡рд╛рдкрд╕ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ before() , after() , between() рдФрд░ dtstart рд╡рд┐рдХрд▓реНрдк рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕