Зашто Уник има свој концепт времена? Шта је епоха и шта је проблем И2038?

Уник време је средство за представљање одређеног датума и времена које користе Линук, мацОС и многи други интероперабилни системи. Толико је раширен да га вероватно користите, а да тога нисте свесни. Једном када схватите Уник време, приметићете га у многим контекстима. Неколико алата вам може помоћи у раду са Уник временом.

Шта је сврха Уник времена?

Уник време је бројање укупних секунди од фиксног времена и датума. То је формат датума / времена (или временске ознаке) који се разликује од читљивих датума и времена на које смо навикли. Ово је искључиво из разлога ефикасности. За складиштење једног броја који представља секунде потребно је много мање простора него за одвојене вредности за годину, месец, сат итд.

Наравно, у модерном погледу просторна разлика уопште није толико велика. Али узмите у обзир да је Уник настао крајем 1960-их када је расположива меморија била далеко мања. Временске марке се такође често користе, па се њихово складиште сабира. На пример, свака датотека има три временске ознаке повезане са собом.

instagram viewer

Формат је прилично немогуће превести у глави ако нисте математички геније. Али ипак има неке предности у односу на читљивије алтернативе као што је Сре, 21. октобра 2015. 07:28:00 ГМТ. Можете наручити две Уник временске ознаке врло брзо, на први поглед. Обично је и брже утврдити разлику између две временске ознаке. Ово се посебно односи на датуме који су блиски, попут суседних дана.

О епохи

Дакле, Уник време је укупан број секунди од одређеног времена. Али који је то тренутак? Његово 00:00:00 УТЦ на 1. јануара 1970. Ово се често назива Уник Епоха. Програмери су изабрали овај датум за епоху из практичности, јер је то био најближи округли датум када су измислили Уник време.

Можда сте добро видели овај датум када је нешто пошло по злу. То је очигледно грешка, али она која изгледа врло чудно када резултира датумом пре времена када смо се многи од нас родили! Потпуно је разумљиво кад знате за Уник време. Ако било који систем покушава да прикаже временску ознаку која нема никакву вредност, често ће се превести на 0 и резултирати тачним датумом епохе.

Уник формат података о времену

Строго говорећи, нема га. Изворни тип података био је 32-битни цели број, а то често остаје случај, чак и у много моћнијим системима.

Овај тип података омогућава да вредност сачува укупно 2 ^ 32 секунде, што је нешто више од 136 година. Ова вредност је обично потписана, што значи да може бити негативна или позитивна. Дакле, то обично представља 68 година са обе стране епохе, тј. 1902-2038.

Ово је још увек ограничен период, наравно. Али примарна употреба формата временске ознаке била је за концепте као што је модификација датотеке. Потреба је била много да се представи време блиско садашњости, а не древна историја или далеко у будућност. Чак и за апликације као што су календари, ретко постоји потреба да се датуми прикажу више од неколико деценија у будућности.

Али то не значи да је овај ограничени временски распон без проблема...

Проблем 2038. године

И2К Буг (једна од најгорих програмских грешака у историји) утицали на рачунарске системе који су године чували као двоцифрене вредности. Када је наступила 2000. година, такви системи су се према њој односили као да је 1900. година. У случају да ово није било толико катастрофално колико се страховало, углавном зато што су многи људи потрошили много времена и труда унапред, припремајући се за то.

10 најгорих грешака у програмирању у историји

У својој прошлој причи, кодирање и кованог уништења. Примери мало лошег кода изазвали су катастрофу на већем нивоу. Следи 10 најгорих програмских грешака у историји.

Ако сте обраћали пажњу у претходном одељку, можда сте приметили сличан проблем који може утицати на Уник време. Па, Уник тиме има свој проблем са подацима: проблем И2к38. (То се често назива проблемом, а не грешком; можда смо постали оптимистичнији од 2000. године!) Када Уник време буквално истекне 2038. године, системи ће нове датуме третирати или као 1902 или 1970. Или ће можда једноставно потпуно пропасти.

Барем нас овај проблем неће погодити у поноћи уочи Нове године. Последња секунда 32-битног Уник-овог времена пашће 19. марта. У случају да ћемо већину система вероватно надоградити до 2038. или ће до тада ионако бити застарели.

Неки корисни ресурси за временску ознаку

Тхе Епоцх Цонвертер веб локација је вероватно најопсежнији доступни претварач временских жигова. Почиње приказивањем тренутног Уник времена - у реалном времену - и додаје готово све замисливе особине поврх тога. Његова главна употреба је за претварање између временских жигова и читљивих датума, у оба смера.

Дан’с Тоолс је огромна колекција корисних веб апликација, од којих је једна претварач временских жигова. Основније је, али има врло чисту презентацију и лако се користи.

Време је представља још један, још минималистичкији изглед. Приказује време у бројним форматима, укључујући Уник време. У наслов странице укључује тренутно време, што је корисно.

На Линуку и мацОС-у, датум програм је основни услужни програм за бављење датумом / временом, укључујући Уник временске ознаке. Позван без икаквих аргумената, враћа тренутни датум / време у читљивом формату:

$ датум
Сре, 10. фебруара 12:28:30 ГМТ 2021

Ако су вам потребни тренутни датум / време у Уник времену, користите +% с расправа:

$ датум +% с
1612960114

Можете да претворите из читљивог датума у ​​временску ознаку помоћу застава ако је ваша верзија датум подржава га. Већина Линук верзија би, подразумевано:

$ дате -д "2. јануара 1970" +% с
82800

На мацОС-у, датум је другачији програм, који захтева другачији скуп заставица:

$ дате -ј -ф "% б% д% И% Т" "02. јануар 1970. 00:00:00" "+% с"
82800

Идући у другом смеру, можете претворити из Уник временске ознаке помоћу застава:

$ датум -р 1600000000
Сун 13 Сеп 2020 13:26:40 БСТ

Неки други програми користе % с формат за бављење Уник временом. На пример, ако желите да прикажете датум модификације датотеке у Уник времену, помоћу Линук верзија лс, можете користити следеће:

$ лс -л --тиме-стиле = +% с индек.тмп.хтмл
-рв-р - р-- 1 убунту убунту 17862 1521649818 индек.тмп.хтмл

Како се користи Уник време у програмским језицима

ПХП има време() функција која враћа тренутну временску ознаку Уник-а. Његово датум () функција узима временску ознаку као свој други аргумент:

$ пхп -р 'ецхо дате ("И-м-д", тиме ());'
2021-02-11

ЈаваСцрипт стварима приступа на занимљив начин. Има а Дате.нов () метода за добијање броја милисекунди од Уник епохе. Наравно, ово можете поделити са 1.000 и заокружити резултат да бисте добили еквивалентно Уник време у секундама:

> Математички спрат (Дате.нов () / 1000)
1613083012

Разумевање Уник времена

Уник време је једноставан концепт који се појављује на многим местима. Једном када га схватите, можда ће вам бити прилично корисно, на пример, при израчунавању временских разлика. Такође можете препознати када је то можда узрок одређених грешака.

Концепти попут епохе и временских жигова су важан део почетка рада са Линуком. Да бисте сазнали више о основним стварима као што су лс, погледајте наш водич за основне Линук наредбе.

Емаил
9 основних наредби за почетак рада са Линуком

Желите да се упознате са Линуком? Почните са овим основним Линук наредбама да бисте научили стандардне рачунске задатке.

Повезане теме
  • Неодређено
О аутору
Бобби Јацк (Објављено 27 чланака)

Бобби је технолошки ентузијаст који је радио као програмер већину две деценије. Заљубљен је у игре на срећу, радећи као уредник рецензија у часопису Свитцх Плаиер, и уживан је у свим аспектима објављивања на мрежи и веб развоја.

Још од Бобби Јацк-а

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, прегледе, бесплатне е-књиге и ексклузивне понуде!

Још један корак…!

Молимо потврдите своју адресу е-поште у е-поруци коју смо вам управо послали.

.