MCP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ тЖТ

рдЧрдгрдирд╛ рджрд░реНрдЬ рдХрд░реЗрдВ

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

рд╕реВрддреНрд░ (рдлреЙрд░реНрдореВрд▓рд╛)

рд╡рд┐рдЬреНрдЮрд╛рдкрди

рдкрд░рд┐рдгрд╛рдо

Unix рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк (Epoch)
1,700,000,000
1 рдЬрдирд╡рд░реА 1970 UTC рд╕реЗ рдмреАрддреЗ рд╕реЗрдХрдВрдб
рдорд┐рд▓реАрд╕реЗрдХрдВрдб 1,700,000,000,000
epoch рд╕реЗ рдмреАрддреЗ рдорд┐рдирдЯ 28,333,333
epoch рд╕реЗ рдмреАрддреЗ рдШрдВрдЯреЗ 472,222
epoch рд╕реЗ рдмреАрддреЗ рджрд┐рди 19,675

Unix рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреНрдпрд╛ рд╣реИ?

Unix рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк (рдЬрд┐рд╕реЗ epoch time рдпрд╛ POSIX time рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдЙрди рд╕реЗрдХрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬреЛ 1 рдЬрдирд╡рд░реА 1970 рдХреЛ 00:00:00 UTC тАФ рдпрд╛рдиреА "Unix epoch" тАФ рд╕реЗ рдЕрдм рддрдХ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдореЗрдВ leap seconds рдирд╣реАрдВ рдЧрд┐рдиреЗ рдЬрд╛рддреЗред рдХрдВрдкреНрдпреВрдЯрд░ рдХрд┐рд╕реА рднреА рдкрд▓ рдХреЛ рдПрдХ рдЕрдХреЗрд▓реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣реА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рддрд░реАрдХрд╛ рдЕрдкрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдЯрд╛рдЗрдо рдЬрд╝реЛрди рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рджреА рдЧрдИ рдХрд┐рд╕реА рд╡реИрд▓реНрдпреВ рдХреЛ рдорд╛рдирдХ Unix рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк (рд╕реЗрдХрдВрдб рдореЗрдВ) рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдФрд░ рд╕рд╛рде рд╣реА epoch рд╕реЗ рдмреАрддреЗ рдмрд░рд╛рдмрд░ рдорд┐рдирдЯ, рдШрдВрдЯреЗ рдФрд░ рджрд┐рди рднреА рджрд┐рдЦрд╛рддрд╛ рд╣реИред

1 рдЬрдирд╡рд░реА 1970 рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдЯрд╛рдЗрдорд▓рд╛рдЗрди, рдЬрд┐рд╕рдХрд╛ рдХрд╛рдЙрдВрдЯрд░ рд╡рд░реНрддрдорд╛рди рдХреНрд╖рдг рдХреА рдУрд░ рдмрдврд╝рддрд╛ рд╣реИ
рдпреВрдирд┐рдХреНрд╕ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдПрдкреЛрдХ рдпрд╛рдиреА 1 рдЬрдирд╡рд░реА 1970 UTC рд╕реЗ рдмреАрддреЗ рд╕реЗрдХрдВрдб рдЧрд┐рдирддрд╛ рд╣реИред

рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ

рд╕рдордп рдХреА рд╡реИрд▓реНрдпреВ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рджрд░реНрдЬ рдХрд░реЗрдВред рд╡рд░реНрддрдорд╛рди Unix рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк ("epoch now") рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрднреА рдХрд╛ рд╕рдордп рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдбрд╛рд▓реЗрдВ; рдЙрджрд╛рд╣рд░рдг рдХреЗ рддреМрд░ рдкрд░ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реИрд▓реНрдпреВ рдкрд╣рд▓реЗ рд╕реЗ рджреА рдЧрдИ рд╣реИред рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдЗрд╕реЗ 1,000 рд╕реЗ рднрд╛рдЧ рджреЗрдХрд░ рдФрд░ рдиреАрдЪреЗ рдХреА рдУрд░ round рдХрд░рдХреЗ рдкреВрд░реНрдг рд╕реЗрдХрдВрдб рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ тАФ рдпрд╣реА рд╡рд╣ рдлрд╝реЙрд░реНрдореЗрдЯ рд╣реИ рдЬрд┐рд╕рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рд▓рдЧрднрдЧ рд╣рд░ API, рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд░рддреА рд╣реИред

рдлрд╝реЙрд░реНрдореВрд▓рд╛ рд╕рдордЭреЗрдВ

рдореБрдЦреНрдп рдЧрдгрдирд╛ рд╣реИ $$\text{Epoch} = \left\lfloor \dfrac{\text{Time (ms)}}{1000} \right\rfloor$$ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╣рдЬрд╝рд╛рд░рд╡реЗрдВ рд╕реЗрдХрдВрдб рддрдХ рдХреА рд╕рдЯреАрдХрддрд╛ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрд▓рд╛рд╕рд┐рдХ Unix рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдкреВрд░реНрдг рд╕реЗрдХрдВрдб рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо floor рд▓реЗрддреЗ рд╣реИрдВ (рджрд╢рдорд▓рд╡ рд╡рд╛рд▓рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ)ред рдЗрд╕рдХреЗ рдмрд╛рдж, epoch рдХреЛ рдХреНрд░рдорд╢рдГ \(60\), \(3{,}600\) рдФрд░ \(86{,}400\) рд╕реЗ рднрд╛рдЧ рджреЗрдиреЗ рдкрд░ рдорд┐рдирдЯ, рдШрдВрдЯреЗ рдФрд░ рджрд┐рди рдорд┐рд▓ рдЬрд╛рддреЗ рд╣реИрдВред

$$\left\{ \begin{aligned} \text{Minutes} &= \left\lfloor \tfrac{\text{Epoch}}{60} \right\rfloor \\ \text{Hours} &= \left\lfloor \tfrac{\text{Epoch}}{3600} \right\rfloor \\ \text{Days} &= \left\lfloor \tfrac{\text{Epoch}}{86400} \right\rfloor \end{aligned} \right.$$
рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдорд╛рди рдХреЛ 1000 рд╕реЗ рднрд╛рдЧ рджреЗрдХрд░ рдПрдкреЛрдХ рд╕реЗрдХрдВрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдХреА рдУрд░ рдкреВрд░реНрдгрд╛рдВрдХрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛
рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЛ 1000 рд╕реЗ рднрд╛рдЧ рджреЗрдХрд░ рдиреАрдЪреЗ рдХреА рдУрд░ рдкреВрд░реНрдгрд╛рдВрдХрд┐рдд рдХрд░рдиреЗ рдкрд░ рдкреВрд░реЗ рдПрдкреЛрдХ рд╕реЗрдХрдВрдб рдорд┐рд▓рддреЗ рд╣реИрдВред

рд╣рд▓ рдХрд┐рдпрд╛ рд╣реБрдЖ рдЙрджрд╛рд╣рд░рдг

рдорд╛рди рд▓реАрдЬрд┐рдП рд╡рд░реНрддрдорд╛рди рд╕рдордп \(1{,}700{,}000{,}000{,}000\) рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╣реИред рдЗрд╕реЗ 1,000 рд╕реЗ рднрд╛рдЧ рджреЗрдиреЗ рдкрд░ \(1{,}700{,}000{,}000\) рд╕реЗрдХрдВрдб рдорд┐рд▓рддреЗ рд╣реИрдВ тАФ рдпрд╣реА Unix рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рд╣реИред $$\left\lfloor \frac{1{,}700{,}000{,}000}{86{,}400} \right\rfloor = 19{,}675 \text{ days}$$ рдпрд╛рдиреА 1,700,000,000 рдХреЛ 86,400 рд╕реЗ рднрд╛рдЧ рджреЗрдХрд░ floor рд▓реЗрдиреЗ рдкрд░ 1 рдЬрдирд╡рд░реА 1970 рд╕реЗ 19,675 рджрд┐рди рдирд┐рдХрд▓рддреЗ рд╣реИрдВ, рдЬреЛ рдирд╡рдВрдмрд░ 2023 рдХреЗ рдордзреНрдп рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛ рд╕рдордп рд╣реИред

рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╡рд╛рд▓

рд╕реЗрдХрдВрдб рдХреНрдпреЛрдВ, рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреНрдпреЛрдВ рдирд╣реАрдВ? рдореВрд▓ Unix рдорд╛рдирдХ рд╕реЗрдХрдВрдб рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рд╣реИред JavaScript рдХрд╛ Date.now() рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдХреНрд╕рд░ рдЖрдкрдХреЛ 1,000 рд╕реЗ рднрд╛рдЧ рджреЗрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдЯрд╛рдЗрдо рдЬрд╝реЛрди рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ? рдирд╣реАрдВ тАФ Unix time рд╣рдореЗрд╢рд╛ UTC рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╣реА рдкрд▓ рдХрд╛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдзрд░рддреА рдкрд░ рд╣рд░ рдЬрдЧрд╣ рдПрдХ рдЬреИрд╕рд╛ рд░рд╣рддрд╛ рд╣реИред

рд╡рд░реНрд╖ 2038 рдХреА рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ? рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЛ signed 32-bit integer рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рд╡реЗ 19 рдЬрдирд╡рд░реА 2038 рдХреЛ overflow рд╣реЛ рдЬрд╛рдПрдБрдЧреЗред рдЖрдзреБрдирд┐рдХ 64-bit рд╕рд┐рд╕реНрдЯрдо рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪреЗ рд░рд╣рддреЗ рд╣реИрдВред

рдЕрдВрддрд┐рдо рдЕрдкрдбреЗрдЯ: