Skip to content

Latest commit

 

History

History
34 lines (22 loc) · 4.72 KB

Decoding Unix Time - Understanding the Epoch and Beyond.hy.md

File metadata and controls

34 lines (22 loc) · 4.72 KB

Understanding Unix Time

JavaScript-ում գոյություն ունի Date ներդրված օբյեկտը, որի now ստատիկ մեթոդի կանչը վերադարձնում է 1970 թվականի հունվարի մեկի կեսգիշերից մինչև մեթոդի կանչի ժամանակն անցած միլիվայրկյանների քանակը: Ի՞նչ է Unix time համակարգը, և ինչու՞ է որպես հաշվարկման համակարգի սկիզբ ընդունված 1970 թվականի հունվարի մեկի կեսգիշերը:

Համակարգչային ծրագրերի մեջ ժամանակը կարելի է պահել տարբեր ձևերով։ Ձևերից մեկը Unix time (Երբեմն անվանում են նաև Posix time) ստանդարտի օգտագործումն է։ Այդ ստանդարտում ժամանակը գրի է առնվում որպես վայրկյանների քանակություն, հաշված 1970 թվականի հունվարի մեկի ուղիղ կեսգիշերից (00 : 00 : 00 UTC):

1960-ական թվականների վերջին ամերիկյան AT&T ընկերությունում սկսվեցին նոր օպերացիոն համակարգի մշակումները, և 1969 թվականին թողարկվեց UNIX օպերացիոն համակարգի առաջին պաշտոնական տարբերակը։ UNIX-ի համակարգային ժամանակի հաշվարկման սկիզբ ընդունվեց 1970 թվականի հունվարի մեկի կեսգիշերը, որպես առաջին պաշտոնական տարբերակի թողարկման ժամանակին ամենամոտ կլոր տարեթիվ։

Քանի-որ UNIX-ը չափազանց պոպուլյար օպերացիոն համակարգ էր, այդ ստանդարտը լայնորեն տարածում գտավ, և այլ օպերացիոն համակարգերը որպես ժամանակը պահելու հարմար ստանդարտ, նույնպես սկսեցին կիրառել Unix Time-ը։ Այն դարձավ ստանդարտ նաև մի շարք ծրագրավորման լեզուներում (Օրինակ՝ Java, JavaScript, PHP

Չնայած որ UNIX Time-ը ամենատարածված ստանդարտն է, այն միակը չէ։ Կան ստանդարտներ, որտեղ որպես ժամանակի սկիզբ ընդունված է 1900, 1980 կամ 2001 թվականների հունվարի մեկի կեսգիշերը։

Date ներդրված օբյեկտի now ստատիկ մեթոդի կանչը վերադարձնում է մեթոդի կանչի պահից մինչև 1970 թվականի հունվարի 1-ի կեսգիշերն անցած միլիվայրկյանների քանակը։ Ամբողջ թիվը, որը պարունակում է այդ միլիվայրկյանների քանակը՝ կոչվում է timestamp: Մենք միշտ կարող ենք հեշտությամբ ստանալ տարեթիվն ու ժամանակը, եթե ունենք timestamp-ը։ Դրա համար ընդամենն անհրաժեշտ է date տեսակի օբյեկտ ստեղծելու ժամանակ կոնստրուկտորին փոխանցել timestamp-ը։ Օրինակ՝

const date = new Date(162659279735);
console.log(date); // Wed Feb 26 1975 19:07:59 GMT+0400 (Armenia Standard Time)

Մենք կարող ենք նաև տարեթիվն ու ժամանակը ունենալով, ստանալ timestamp-ը։ Նախ ստեղծենք օբյեկտ, որն իր մեջ պարունակում է տարեթիվն ու ժամանակը, ապա հետո նրանից ստանանք timestamp-ը․

const now = new Date(2021, 6, 18, 12, 15, 30, 500);
console.log(now); // Sun Jul 18 2021 12:15:30 GMT+0400 (Armenia Standard Time)

new Date կոնստրուկտորին մենք փոխանցել ենք սկզբից տարեթիվը, ապա ամիսը (_չենք մոռանում, որ JavaScript-ում հունվարը 0-երորդ ամիսն է, հետևաբար հուլիսը կլինի ոչ թե 7-րդ, այլ 6-րդ ամիսը _), հետո փոխանցում ենք օրը, ժամը, րոպեն, վայրկյանը և միլիվայրկյանը։ Այժմ now փոփոխականից փորձենք ստանալ timestamp-ը։

const ts = now.getTime();
console.log(ts); // 1626596130500

Այսինքն 2021 թվականի հուլիսի 18-ի 12։15։30-ին համապատասխանում է timestamp-ի 1626596130500 արժեքը, որն էլ 1970 թվականի հունվարի 1-ի կեսգիշերից մինչև այդ պահը անցած միլիվայրկյանների քանակն է։