← Բոլոր գործիքները

Unix ժամանակադրոշմի փոխարկիչ

Փոխարկեք Unix ժամանակադրոշմերը ամսաթվերի և հակառակը ակնթարթորեն ձեր բրաուզերում։ Իմացեք epoch ժամանակի, վայրկյանների և միլիվայրկյանների, UTC նրբությունների և 2038 թվականի խնդրի մասին։

Unix ժամանակադրոշմեր՝ առանց գլխացավանքի

Հարցրեք երեք ծրագրավորողի, թե քանիսն է ժամը, և կարող եք երեք տարբեր պատասխան ստանալ՝ կախված նրանից, թե ով որտեղ է նստած։ Հարցրեք Unix ժամանակադրոշմին, և ստանում եք ուղիղ մեկ թիվ, նույնը՝ մոլորակի բոլորի համար։ Հենց այդ մեկ ամբողջ թիվն է, որ լուռ հիմքում ընկած է համարյա ամեն մատյան ֆայլի, տվյալների բազայի տողի և API պատասխանի, որին երբևէ դիպչելու եք։ Այս էջը բացատրում է, թե ինչ է նշանակում այդ թիվը, ինչպես կարդալ այն երկու ուղղությամբ, և որտեղ է այն սովորաբար խայթում մարդկանց։

Փայլող ժամացույց, որը լուծարվում է լույս-թվանշանների հոսքի մեջ, ներկայացնելով Unix epoch ժամանակը
Epoch ժամանակը մեկ հաշվիչ է, որը ընթանում է առաջ 1970 թվականից ի վեր։

Ինչ իրապես է Unix ժամանակը

Unix ժամանակադրոշմը այն վայրկյանների թիվն է, որ անցել են 1970 թվականի հունվարի 1-ի ժամը 00:00:00 UTC-ից ի վեր, ընդառաջ ցատկվող վայրկյանները չհաշված։ Այդ պահը կոչվում է epoch, և այն ընտրվել է վաղ Unix ինժեներների կողմից պարզապես այն պատճառով, որ դա հարմար կլոր ամսաթիվ էր՝ հաշվարկը սկսելու համար։ Epoch-ի ժամանակ արժեքը ուղիղ 0 է։ Այդ պահից ի վեր ամեն վայրկյան ավելացնում է մեկ, ուստի թիվը միայն մեծանում է։ 1970-ից առաջ ամսաթվերը նույնպես բոլորովին վավեր են՝ արտահայտված որպես բացասական ամբողջ թիվեր։

Կտեսնեք այս հասկացությունը կոչված նաև POSIX ժամանակ, կամ ազատ ձևով՝ epoch ժամանակ։ Ինչ պիտակով էլ որ լինի, մեխանիզմը նույնն է. մեկ մշտապես աճող վայրկյանների հաշվիչ։ Քանի որ դա հասարակ ամբողջ թիվ է, ոչ թե ֆորմատավորված տող, համակարգիչը կարող է պահել այն մի քանի բայթում և համեմատել երկուսը միայն մեկ հանման գործողությամբ։

Վայրկյաններ, միլիվայրկյաններ և ընկերները

Դասական Unix ժամանակը հաշվում է ամբողջ վայրկյաններ, ինչը տալիս է ծանոթ տասնանիշ թիվը, որ տեսնում եք այսօր։ Բայց շատ միջավայրերի ավելի նուրբ ճշգրտություն է պետք։ JavaScript-ը, օրինակ, աշխատում է միլիվայրկյաններով՝ ստեղծելով տասներեքանիշ արժեք, և որոշ համակարգեր գնում են ավելի հեռու՝ միկրովայրկյանների կամ նանովայրկյանների։ Հուսալի կանոն. տասնանիշ թիվը վայրկյան է, տասներեքանիշը՝ միլիվայրկյան։ Եթե ձեր փոխակերպված ամսաթիվը ընկնում է 1970-ի ինչ-որ տեղում, երբ սպասում էիք ներկան, դուք համարյա հաստատ միլիվայրկյաններ եք տվել վայրկյանների դաշտի մեջ, կամ հակառակը։ Մեր փոխարկիչն ինքնաբերաբար հայտնաբերում է մեծությունը, այնպես որ հազվադեպ եք ստիպված կռահել։

Ինչու են ծրագրավորողները հենվում դրա վրա

Մեծ առավելությունն այն է, որ ժամանակադրոշմը ժամային գոտուց անկախ է։ 1735689600 ամբողջ թիվը վերաբերում է նույն պահին Տոկիոյում, Բեռլինում և Սան Պաուլուում։ Այդ թիվը պահելը՝ ֆորմատավորված տեղական տողի փոխարեն, նշանակում է, որ երբեք ստիպված չեք լինի մտածել, թե որ ժամացույցին է արժեքը պատկանել։ Դասավորումն էլ է հասարակ, քանի որ ժամանակագրական կարգը պարզապես թվային կարգ է, ուստի ժամանակադրոշմային սյունակի վրա տվյալների բազայի ինդեքսը ճիշտ դասավորում է իրադարձությունները առանց վերլուծության։ Թվաբանությունը հավասարապես մաքուր է. երկու իրադարձության միջև ընկած ժամանակահատվածը մեկ հանում է, և մեկ օր ավելացնելը 86400 ավելացնելն է։ Հենց այս հատկություններն են պատճառը, թե ինչու մատյանները, տոկենները, քեշերը և հաղորդագրությունների հերթերը բոլորն էլ դիմում են epoch ժամանակին։

Փոխակերպումն երկու ուղղությամբ

Ժամանակադրոշմից մարդու ընկալման ամսաթվի տեղափոխվելը նշանակում է վայրկյանների հաշվարկը նախագծել օրացույցի վրա, ապա ֆորմատավորել այն ցանկացած ժամային գոտում, ինչը ձեզ հետաքրքրում է։ Հակառակ ուղղությամբ գնալիս վերցնում եք տարի, ամիս, օր և ժամ, որոշում եք, թե որ ժամային գոտում է արտահայտված այն, և կրճատում եք հետ դեպի վայրկյաններ՝ epoch-ից սկսած։ Մեր գործիքն անում է երկու ուղղություններն էլ ակնթարթորեն և ամբողջովին ձեր բրաուզերում, ուստի ինչ էլ տեղադրեք, չի հեռանում ձեր սարքից։ Տեղադրեք թիվ՝ այն վերծանելու համար, կամ ընտրեք ամսաթիվ՝ այն կոդավորելու համար, և կարդացեք արդյունքը թե՛ UTC-ով, թե՛ ձեր տեղական ժամանակով, միևնույն պահին։

Փայլող ժամանակագրական ժապավեն՝ նշիչով, որը սահում է epoch վայրկյանների հոսքի երկայնքով
Մեկ նշիչ մեկ ժամանակագրության վրա, ընթեռնելի թե՛ UTC-ով, թե՛ տեղական ժամանակով։

UTC ընդդեմ տեղական ժամանակի, դասական թակարդը

Ժամանակադրոշմն ինքնին ժամային գոտի չունի, այն միշտ ամրացված է UTC-ին։ Շփոթությունը հայտնվում է միայն, երբ ցուցադրում եք այն։ Եթե փոխակերպեք 1700000000-ը, և ձեր էկրանը ցույց է տալիս երեկոյան ժամ, մինչ մեկ ուրիշ երկրի գործընկերը տեսնում է կեսօրից հետո, ոչինչ կոտրված չէ, երկուսդ էլ նայում եք նույն պահին, ցուցադրված տարբեր տեղական ժամացույցներով։ Սխալները սողում են ներս, երբ կոդը կարդում է տեղական ամսաթիվը՝ ասես դա UTC էր, կամ դրոշմում է պատի ժամացույցի ժամանակը՝ առանց օֆսեթը գրանցելու։ Անվտանգ սովորությունն է պահել և փոխանցել UTC, և տեղական օֆսեթը կիրառել միայն վերջին պահին, երբ ցուցադրում եք արժեքը մարդուն։ Երկյուղածության դեպքում համեմատեք փոխարկիչի UTC տողի հետ, ոչ թե ձեր տեղականի։

2038 թվականի խնդիրը

Շատ հին համակարգեր Unix ժամանակը պահել են 32-բիթանոց նշանավոր ամբողջ թվում։ Այդ դաշտը սպառում է իր տարածությունը 2038 թվականի հունվարի 19-ի ժամը 03:14:07 UTC-ից մեկ վայրկյան հետո, երբ հաշվիչը գերլցվում է և պտտվում է դեպի բացասական թիվ, հնարավոր է հետ նետելով ամսաթվերը մինչև 1901։ Դա նույն ընտանիքի խնդիրն է, ինչ Y2K-ն։ Բարի լուրն այն է, որ ժամանակակից օպերացիոն համակարգերն ու լեզուները մեծամասամբ անցել են 64-բիթանոց ժամանակադրոշմերի, որոնք չեն գերլցվի մոտավորապես 292 միլիարդ տարի, ուստի նոր կոդի համար դա հիմնականում պատմական հետաքրքրություն է, ոչ թե արտակարգ իրավիճակ։

Ավելի շատ բրաուզերի վրա հիմնված օգնականների համար տես մեր ծրագրավորողի գործիքները, և եթե ձեզ պետք է աշխատել հենց թվերի հետ, հաշվիչները մեկ սեղմումով հեռու են։

Հաճախակի տրվող հարցեր

Ի՞նչ է Unix ժամանակադրոշմը

Դա 1970 թվականի հունվարի 1-ի ժամը 00:00:00 UTC-ից ի վեր անցած վայրկյանների թիվն է, ընդառաջ ցատկվող վայրկյանները չհաշված։ Այդ մեկնարկային պահը կոչվում է epoch, և հաշվարկը միայն ավելանում է ժամանակի ընթացքում։

Ինչու՞ է իմ թիվը վերածվում ամսաթվի, որ մոտ է 1970-ին

Հավանաբար դուք խառնել եք վայրկյանները և միլիվայրկյանները։ Տասնանիշ թիվը վայրկյան է, և տասներեքանիշ թիվը՝ միլիվայրկյան։ Միլիվայրկյանները վայրկյանների դաշտի մեջ տալը հայտնի ժամանակը բաժանում է մոտավորապես հազարով՝ ձեզ մոտեցնելով epoch-ին։

Unix ժամանակադրոշմն ունի՞ ժամային գոտի

Ոչ։ Արժեքը միշտ ամրացված է UTC-ին։ Ժամային գոտին խաղի մեջ մտնում է միայն, երբ ցուցադրում եք ժամանակադրոշմը որպես մարդու ընկալման ամսաթիվ, ինչի պատճառով նույն թիվը կարող է ցույց տալ տարբեր պատի ժամացույցի ժամեր տարբեր մարդկանց համար։

Ինչպե՞ս փոխարկեմ ամսաթիվը հետ ժամանակադրոշմի

Տրամադրեք տարին, ամիսը, օրը և ժամանակը, որոշեք, թե որ ժամային գոտում է արտահայտված այդ ամսաթիվը, և գործիքը կրճատում է այն հետ դեպի վայրկյաններ՝ epoch-ից սկսած։ Կարող եք երկու ուղղություններն էլ կատարել այս էջում ակնթարթորեն՝ ձեր բրաուզերում։

Ի՞նչ է 2038 թվականի խնդիրը

Համակարգերը, որոնք Unix ժամանակը պահում են 32-բիթանոց նշանավոր ամբողջ թվում, գերլցվում են 2038 թվականի հունվարի 19-ի ժամը 03:14:07 UTC-ից մեկ վայրկյան հետո։ Ժամանակակից 64-բիթանոց ժամանակադրոշմերն այս խնդրից խուսափում են միլիարդավոր տարիներ, ուստի ներկայիս ծրագրային ապահովման մեծ մասը դրանից ազդված չէ։

Իմ տվյալները ուղարկվու՞մ են սերվեր

Ոչ։ Փոխակերպումն ամբողջովին տեղի է ունենում ձեր բրաուզերում, ուստի ցանկացած ժամանակադրոշմ կամ ամսաթիվ, որ տեղադրում եք, մնում է ձեր սեփական սարքում։