← Zana zote

Kibadilishaji cha Unix Timestamp

Badilisha Unix timestamps kuwa tarehe na kurudi papo hapo kwenye kivinjari chako. Jifunze muda wa epoch, sekunde na milisekunde, hitilafu za UTC na tatizo la mwaka 2038.

Muhuri za Muda za Unix Bila Maumivu ya Kichwa

Muulize waandaji programu watatu ni saa ngapi na huenda ukapata majibu matatu, kutegemea wako wapi. Muulize muhuri wa muda wa Unix na unapata namba moja hasa, ile ile kwa kila mtu duniani. Namba kamili hiyo moja ndiyo inayounga mkono karibu kila faili la logi, mstari wa hifadhidata, na jibu la API utakalowahi kuligusa. Ukurasa huu unaeleza namba hiyo inamaanisha nini, jinsi ya kuisoma kwa pande zote mbili, na mahali huwa inawakwaza watu.

Saa yenye mwanga ikiyeyuka kuwa mkondo wa tarakimu za mwanga, ikiwakilisha muda wa epoch ya Unix
Muda wa epoch ni kihesabu kimoja kinachoendelea mbele tangu 1970.

Muda wa Unix ni nini hasa

Muhuri wa muda wa Unix ni idadi ya sekunde zilizopita tangu saa 00:00:00 UTC ya tarehe 1 Januari 1970, bila kuhesabu sekunde za nyongeza. Wakati huo unaitwa epoch, na ulichaguliwa na wahandisi wa mwanzo wa Unix kwa sababu tu ulikuwa tarehe ya duara inayofaa kuanzia kuhesabu. Katika epoch thamani ni 0 hasa. Kila sekunde tangu wakati huo huongeza moja, hivyo namba hiyo inaongezeka tu. Tarehe kabla ya 1970 pia ni sahihi kabisa, zikielezwa kama namba hasi.

Utaona dhana hii ikiitwa pia muda wa POSIX au, kwa uhuru zaidi, muda wa epoch. Lolote likiwa jina, mfumo ni ule ule: kihesabu kimoja kinachoongezeka daima cha sekunde. Kwa kuwa ni namba kamili badala ya mfuatano ulioundwa, kompyuta inaweza kuihifadhi kwa baiti chache na kulinganisha mbili kwa toa moja.

Sekunde, milisekunde, na jamaa zao

Muda wa kawaida wa Unix huhesabu sekunde kamili, jambo linalotoa namba ya tarakimu kumi inayofahamika unayoiona leo. Lakini mazingira mengi yanahitaji usahihi mzuri zaidi. JavaScript, kwa mfano, hufanya kazi kwa milisekunde, ikizalisha thamani ya tarakimu kumi na tatu, na baadhi ya mifumo huenda mbali zaidi hadi mikrosekunde au nanosekunde. Kanuni ya kidole gumba inayoaminika: namba ya tarakimu kumi ni sekunde, tarakimu kumi na tatu ni milisekunde. Ikiwa tarehe uliyobadilisha inatua karibu na 1970 wakati ulitarajia siku ya leo, karibu bila shaka umewekea milisekunde kwenye uga wa sekunde, au kinyume chake. Kibadilishi chetu hutambua ukubwa kiotomatiki hivyo mara chache utahitaji kubahatisha.

Kwa nini waandaji programu wanategemea sana

Faida kubwa ni kwamba muhuri wa muda hauhusiani na eneo la muda. Namba kamili 1735689600 inarejelea wakati ule ule katika Tokyo, Berlin, na São Paulo. Kuhifadhi namba hiyo badala ya mfuatano wa eneo ulioundwa humaanisha kamwe hutakuwa na wasiwasi ni saa gani thamani ilihusiana nayo. Kupanga pia ni rahisi, kwa sababu mpangilio wa nyakati ni mpangilio wa kihesabu tu, hivyo faharasa ya hifadhidata juu ya safu wima ya muhuri wa muda hupanga matukio kwa usahihi bila uchambuzi wowote. Hesabu pia ni safi sawasawa: pengo kati ya matukio mawili ni toa moja, na kuongeza siku moja ni kuongeza 86400. Sifa hizi ndizo hasa sababu logi, tokeni, akiba za muda, na foleni za ujumbe zote hutegemea muda wa epoch.

Kubadilisha pande zote mbili

Kwenda kutoka muhuri wa muda hadi tarehe ya kibinadamu humaanisha kuchukua idadi ya sekunde na kuikadiria kwenye kalenda, kisha kuipanga katika eneo lolote la muda unalojali. Kwenda njia nyingine, unachukua mwaka, mwezi, siku, na muda, unaamua ni eneo gani la muda linaelezwa, na kuikunja tena kuwa sekunde tangu epoch. Chombo chetu hufanya pande zote mbili papo hapo na kabisa ndani ya kivinjari chako, hivyo hakuna unachobandika kinachotoka kwenye kompyuta yako. Bandika namba kuifungua, au chagua tarehe kuisimba, na soma matokeo kwa UTC na muda wako wa ndani wakati ule ule.

Utepe wa muda wenye mwanga ukiwa na alama inayoteleza kando ya mkondo unaotiririka wa sekunde za epoch
Alama moja kwenye mstari mmoja wa muda, inayosomeka kwa UTC na muda wa ndani vyote.

UTC dhidi ya muda wa ndani, mtego wa kawaida

Muhuri wa muda wenyewe hauna eneo la muda; daima umefungwa kwa UTC. Mkanganyiko hujitokeza tu unapouonyesha. Ukibadilisha 1700000000 na skrini yako inaonyesha saa za jioni wakati mwenzako katika nchi nyingine anaona saa za mchana, hakuna kilichoharibika, wote wawili mnatazama wakati ule ule ukioneshwa kwa saa tofauti za ndani. Hitilafu hujitokeza wakati msimbo unasoma tarehe ya ndani kana kwamba ni UTC, au kuweka muhuri wa muda wa saa ya ukutani bila kurekodi tofauti ya eneo. Desturi salama ni kuhifadhi na kutuma UTC, na kutumia tofauti ya eneo la ndani tu wakati wa mwisho kabisa, unapoonyesha thamani kwa mtu. Unapokuwa na shaka, linganisha na mstari wa UTC kwenye kibadilishi badala ya wa ndani wako.

Tatizo la mwaka 2038

Mifumo mingi ya zamani ilihifadhi muda wa Unix katika namba kamili yenye saini ya biti 32. Uga huo unaisha nafasi sekunde moja baada ya saa 03:14:07 UTC ya tarehe 19 Januari 2038, ambapo kihesabu kinazidi kikomo na kurudi nyuma kuwa namba hasi, kikiwezekana kurudisha tarehe hadi 1901. Ni aina ile ile ya tatizo kama Y2K. Habari njema ni kwamba mifumo ya uendeshaji na lugha za kisasa zimehamia kwa kiasi kikubwa kwenye muhuri za muda za biti 64, ambazo hazitazidi kikomo kwa takriban miaka bilioni 292, hivyo kwa msimbo mpya ni jambo la kihistoria la kuvutia zaidi kujua badala ya dharura.

Kwa vifaa zaidi vinavyofanya kazi kwenye kivinjari ona vifaa vyetu vya wasanidi programu, na ikiwa unahitaji kufanya kazi na namba zenyewe, vikokotoo viko mbofyo mmoja tu.

Maswali yanayoulizwa mara kwa mara

Muhuri wa muda wa Unix ni nini?

Ni idadi ya sekunde tangu saa 00:00:00 UTC ya tarehe 1 Januari 1970, bila kuhesabu sekunde za nyongeza. Wakati huo wa kuanzia unaitwa epoch, na kihesabu huongezeka tu kwa muda.

Kwa nini namba yangu inabadilika kuwa tarehe karibu na 1970?

Huenda ulichanganya sekunde na milisekunde. Namba ya tarakimu kumi ni sekunde na namba ya tarakimu kumi na tatu ni milisekunde. Kuweka milisekunde kwenye uga wa sekunde hugawa muda unaoonekana kwa takriban elfu moja, ukikufikisha karibu na epoch.

Je, muhuri wa muda wa Unix una eneo la muda?

Hapana. Thamani daima imefungwa kwa UTC. Eneo la muda huingia tu unapoonyesha muhuri wa muda kama tarehe inayosomeka na binadamu, ndiyo sababu namba ile ile inaweza kuonyesha saa tofauti za ukutani kwa watu tofauti.

Ninawezaje kubadilisha tarehe kurudi kuwa muhuri wa muda?

Toa mwaka, mwezi, siku, na muda, amua ni eneo gani la muda tarehe hiyo inaelezwa, na chombo hukikunja kuwa sekunde tangu epoch. Unaweza kufanya pande zote mbili katika ukurasa huu papo hapo ndani ya kivinjari chako.

Tatizo la mwaka 2038 ni nini?

Mifumo inayohifadhi muda wa Unix katika namba kamili yenye saini ya biti 32 huzidi kikomo sekunde moja baada ya saa 03:14:07 UTC ya tarehe 19 Januari 2038. Muhuri za muda za kisasa za biti 64 huepuka hili kwa mabilioni ya miaka, hivyo programu nyingi za sasa hazihusiki.

Je, data yangu hutumwa kwa seva?

Hapana. Ubadilishaji hufanyika kabisa ndani ya kivinjari chako, hivyo muhuri wa muda au tarehe yoyote unayobandika hubaki kwenye kifaa chako mwenyewe.