рдпреВрдирд┐рдХреНрд╕ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?
рдпреВрдирд┐рдХреНрд╕ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк (рдЬрд┐рд╕реЗ рдПрдкреЛрдХ рдЯрд╛рдЗрдо рдпрд╛ POSIX рдЯрд╛рдЗрдо рднреА рдХрд╣рддреЗ рд╣реИрдВ) рдЙрди рд╕реЗрдХрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬреЛ 1 рдЬрдирд╡рд░реА 1970 рдХреЛ 00:00:00 UTC рдХреЗ рдмрд╛рдж рд╕реЗ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВ тАФ рдЗрд╕рдореЗрдВ рд▓реАрдк рд╕реЗрдХрдВрдб рдирд╣реАрдВ рдЧрд┐рдиреЗ рдЬрд╛рддреЗред рдпрд╣ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХреЛ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рдЯрд╛рдЗрдо рдЬрд╝реЛрди рдФрд░ рдХреИрд▓реЗрдВрдбрд░ рдлреЙрд░реНрдореЗрдЯ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред рдпрд╣ рдХреИрд▓рдХреБрд▓реЗрдЯрд░ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рджрд┐рдП рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЛ (рдпрд╣ рд╡рд╣реА рдЗрдХрд╛рдИ рд╣реИ рдЬреЛ рдЬрд╝реНрдпрд╛рджрд╛рддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдБ рд▓реМрдЯрд╛рддреА рд╣реИрдВ, рдЬреИрд╕реЗ JavaScript рдХрд╛ Date.now()) рдПрдкреЛрдХ рд╕реЗ рд╕реЗрдХрдВрдб, рдорд┐рдирдЯ рдФрд░ рджрд┐рдиреЛрдВ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ
рджрд┐рдП рдЧрдП рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЕрдкрдирд╛ рдпреВрдирд┐рдХреНрд╕ рдЯрд╛рдЗрдо рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдореЗрдВ рдбрд╛рд▓реЗрдВ рдФрд░ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВред рдпрд╣ рдЯреВрд▓ рдЗрд╕реЗ 1000 рд╕реЗ рдлреНрд▓реЛрд░-рдбрд┐рд╡рд╛рдЗрдб рдХрд░рдХреЗ рдкреВрд░реЗ рдпреВрдирд┐рдХреНрд╕ рд╕реЗрдХрдВрдб рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ тАФ рдпрд╣реА рд╡рд╣ рд░реВрдк рд╣реИ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕, API рдФрд░ Linux рдХреЗ date +%s рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдо рд╣реИред рдкрд░рд┐рдгрд╛рдо рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдореВрд▓ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдорд╛рди рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдмреАрддреЗ рд╣реБрдП рдорд┐рдирдЯ рдФрд░ рджрд┐рди рднреА рджрд┐рдЦрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдк рдЭрдЯрдкрдЯ рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХреЗрдВред
рдлреЙрд░реНрдореВрд▓рд╛ рд╕рдордЭреЗрдВ
рдореВрд▓ рд░реВрдкрд╛рдВрддрд░рдг рд╣реИ epoch_s = floor(now_ms / 1000)ред
1000 рд╕реЗ рднрд╛рдЧ рджреЗрдиреЗ рдкрд░ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╕реЗрдХрдВрдб рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдлреНрд▓реЛрд░ рджрд╢рдорд▓рд╡ рд╡рд╛рд▓рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдкреВрд░реЗ-рд╕реЗрдХрдВрдб рд╡рд╛рд▓рд╛ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдорд┐рд▓реЗред рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП floor(now_ms / 60000) рдФрд░ рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП floor(now_ms / 86,400,000) рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рджрд┐рди рдореЗрдВ 86,400 рд╕реЗрдХрдВрдб = 86,400,000 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рд╣реЛрддреЗ рд╣реИрдВред
рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг
рдорд╛рди рд▓реАрдЬрд┐рдП now_ms = 1,700,000,000,000ред рддрдм
рдЬреЛ 14 рдирд╡рдВрдмрд░ 2023 рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдПрдкреЛрдХ рд╕реЗ
$$\text{Minutes} = \left\lfloor \frac{1{,}700{,}000{,}000{,}000}{60000} \right\rfloor = 28{,}333{,}333$$$$\text{Days} = \left\lfloor \frac{1{,}700{,}000{,}000{,}000}{86{,}400{,}000} \right\rfloor = 19{,}675$$рдЕрдХреНрд╕рд░ рдкреВрдЫреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╡рд╛рд▓
рд╣рд░ рдЬрдЧрд╣ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рдмрдЬрд╛рдп рд╕реЗрдХрдВрдб рдХреНрдпреЛрдВ? рдкреБрд░рд╛рдиреЗ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдХрдИ API (Unix, Postgres, JWT рдХреЗ exp рдХреНрд▓реЗрдо) рд╕реЗрдХрдВрдб рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ Java рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВред рдЗрди рджреЛрдиреЛрдВ рдХреЗ рдмреАрдЪ рдмрджрд▓рдирд╛ рдмрд╕ 1000 рд╕реЗ рдЧреБрдгрд╛ рдпрд╛ рднрд╛рдЧ рдХрд░рдирд╛ рд╣реИред
рд▓реАрдк рд╕реЗрдХрдВрдб рдХрд╛ рдХреНрдпрд╛? рдпреВрдирд┐рдХреНрд╕ рдЯрд╛рдЗрдо рд▓реАрдк рд╕реЗрдХрдВрдб рдХреЛ рдирдЬрд╝рд░рдЕрдВрджрд╛рдЬрд╝ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЧрд┐рдирддреА рдПрдХ рд╕рд╛рдлрд╝ рд░реИрдЦрд┐рдХ рдорд╛рдк рдмрдирддреА рд╣реИ тАФ рдЧрдгрд┐рдд рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ, рдкрд░ рдЦрдЧреЛрд▓реАрдп UTC рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреАред
рдХреНрдпрд╛ рдпрд╣ 2038 рдореЗрдВ рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛? рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдХрдВрдб рдХреА рдЧрд┐рдирддреА рдХреЛ рд╕рд╛рдЗрдиреНрдб 32-рдмрд┐рдЯ рдЗрдВрдЯреАрдЬрд░ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рд╡реЗ 19 рдЬрдирд╡рд░реА 2038 рдХреЛ рдУрд╡рд░рдлреНрд▓реЛ рд╣реЛ рдЬрд╛рдПрдБрдЧреЗред рдЖрдзреБрдирд┐рдХ 64-рдмрд┐рдЯ рд╕рд┐рд╕реНрдЯрдо рдЗрд╕рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗред