Tech Help

Unix Timestamp sekunde dhidi ya milisekunde: kwa nini tarehe inaonyesha 1970

Ikiwa Unix timestamp inakuwa tarehe karibu na 1970, mara nyingi sekunde zilisomwa kama milisekunde. Jinsi ya kutofautisha vitengo.

Jibu fupi

Ikiwa Unix timestamp inatoa tarehe karibu na 1970, thamani mara nyingi inatafsiriwa katika kitengo kisicho sahihi.

Unix timestamps kwa kawaida hutumia sekunde; JavaScript Date kwa kawaida hutumia milisekunde.

Timestamp ya kisasa yenye tarakimu 10 mara nyingi ni sekunde; yenye 13 mara nyingi ni milisekunde. Vitengo visivyolingana vinaweza kuhitaji kuzidisha au kugawanya kwa 1,000.

Ulibadilisha timestamp ukaangukia Januari 1970. Saa haivunjiki mara chache. Namba ilisomwa kama milisekunde ilipohifadhiwa kama sekunde—au kinyume chake.

Unix timestamp ni nini?

Unix timestamp hupima muda tangu Unix epoch: 1970-01-01 00:00:00 UTC. Kwa kawaida hutumia sekunde kamili. Wakati uleule unaweza kuhifadhiwa kama milisekunde (sekunde × 1,000). Namba yenyewe haiandiki kitengo.

Sekunde dhidi ya milisekunde: tofauti ×1,000

Sekunde moja ni milisekunde 1,000. Linganisha 1720000000 na 1720000000000. Ikiwa ya kwanza ni sekunde na ya pili milisekunde, ni wakati uleule. Soma ya kwanza kama milisekunde, tarehe huruka kuelekea 1970.

Matokeo haya ya UTC yalihesabiwa kutoka namba hapo juu, si makadirio.

Thamani Kitengo kinachowezekana Tafsiri (UTC)
1720000000 Sekunde Tarehe ya kisasa ikisomwa kama sekunde: 2024-07-03 09:46:40 UTC
1720000000000 Milisekunde Wakati uleule ikisomwa kama milisekunde: 2024-07-03 09:46:40 UTC
1720000000 kama milisekunde Kitengo kisicho sahihi Tarehe karibu na 1970: 1970-01-20 21:46:40 UTC

Kwa nini timestamp yangu inaonyesha 1970?

Ikiwa thamani ya sekunde inachukuliwa kama milisekunde, namba ni ndogo mara 1,000 kuliko inavyohitajika. JavaScript basi huhesabu muda mfupi tu baada ya Unix epoch, hivyo tarehe inakaa 1970:

const seconds = 1720000000;

new Date(seconds);
// 1970-01-20 21:46:40 UTC

new Date(seconds * 1000);
// 2024-07-03 09:46:40 UTC

Tarehe hiyo ya 1970 ni epoch pamoja na takriban wiki mbili. Zidisha sekunde kwa 1,000 kabla ya kuzipeleka kwa Date.

  • SEKUNDE
  • 1720000000
  • MILISEKUNDE
  • 1720000000000
Wakati uleule: sekunde × 1,000 = milisekunde.
  • Thamani ya sekunde
  • Ilichukuliwa kimakosa kama milisekunde
  • Tarehe karibu na 1970
Sekunde zilizosomwa kama milisekunde huangukia karibu na Unix epoch.
Sekunde au milisekunde?

Ikiwa matokeo yako karibu na 1970, kagua kitengo cha timestamp kabla ya kuchunguza eneo la saa.

Je, tarakimu 10 ni sekunde na 13 ni milisekunde?

Kwa tarehe za kisasa, tarakimu 10 mara nyingi ni sekunde na 13 mara nyingi milisekunde. Ni dalili ya haraka, si kanuni ya uthibitisho. Idadi ya tarakimu inabadilika na kipindi cha muda; baadhi ya API huhifadhi mikrosekunde au nanosekunde. Thibitisha kitengo kwa nyaraka au tarehe inayoeleweka.

Kwa nini hii hutokea mara nyingi katika JavaScript

Katika JavaScript, Date ya namba ni milisekunde tangu epoch. Backend nyingi, hifadhidata na zana za Unix bado huhifadhi sekunde. Kupeleka sekunde moja kwa moja kwa Date ni kosa la kawaida:

const unixSeconds = 1720000000;

const wrong = new Date(unixSeconds);
const correct = new Date(unixSeconds * 1000);

wrong iko karibu na 1970 (1970-01-20 21:46:40 UTC). correct ni wakati wa kisasa (2024-07-03 09:46:40 UTC).

Mifumo mingine hutumia vitengo tofauti

Lugha, API na hifadhidata nyingine zinaweza kutumia sekunde au milisekunde. Nyingine huhifadhi mikrosekunde au nanosekunde. Usifikiri lugha hutumia kitengo kimoja kila wakati—angalia nyaraka. Ikiwa namba iko katika JSON, Panga na linganisha JSON hufanya uga usomeke; bado haitoi kitengo.

Ninawezaje kujua kitengo cha timestamp yangu?

Pitia ukaguzi huu kwa mpangilio. Idadi ya tarakimu peke yake haitoshi.

  1. Angalia nyaraka za API au hifadhidata.
  2. Angalia idadi takriban ya tarakimu.
  3. Linganisha thamani na timestamp ya kisasa inayowezekana.
  4. Jaribu thamani kama sekunde na kama milisekunde.
  5. Angalia kama tarehe inayotoka inaeleweka.

Ikiwa tafsiri moja inaangukia 1970 na nyingine tarehe unayoitambua, sababu ni kutolingana kwa kitengo.

Makosa ya kawaida ya Unix timestamp

  • Sekunde zikifasiriwa kama milisekunde. Tarehe inaporomoka kuelekea 1970, kama katika mfano hapo juu.
  • Milisekunde zikifasiriwa kama sekunde. Tarehe huruka mbali katika siku zijazo, au ubadilishaji unashindwa.
  • Kuzidisha kwa 1,000 mara mbili. Thamani ambayo tayari ilikuwa milisekunde inakuwa kubwa sana na tarehe inaruka karne mbele.
  • Kugawanya kwa 1,000 mara mbili. Thamani ya sekunde inapungua tena, tena karibu na 1970.
  • Kulaumu eneo la saa. Eneo linaweza kuhamisha saa au siku ya kalenda. Halisogezi timestamp ya kisasa hadi 1970.
  • Kuchukulia mfuatano wa tarehe uliopangwa kama Unix timestamp. Thamani kama 2024-07-03T09:46:40Z si namba ya epoch. Ichambue kama tarehe, si kama sekunde.

Je, eneo la saa linasababisha tatizo la 1970?

Kwa kawaida hapana. Eneo la saa linaweza kubadilisha saa inayoonyeshwa na, karibu na usiku wa manane, tarehe ya kalenda. Haligeuzi Unix timestamp ya kisasa kuwa 1970. Ikiwa matokeo ni 1970, kagua kwanza sekunde dhidi ya milisekunde.

Badilisha na kagua Unix timestamp

NEXNARA Kigeuzi cha tarehe na saa inaweza kubadilisha Unix timestamp katika kivinjari.

Bandika sekunde au milisekunde za Unix, tumia timestamp ya sasa, ona UTC na saa ya eneo, badilisha maeneo na panga tarehe. Ugunduzi otomatiki mara nyingi huchukua tarakimu 10 kama sekunde na 13 kama milisekunde; bado unaweza kuchagua kitengo.

Ubadilishaji wenyewe hufanyika kwenye kivinjari chako. Zana hii haitumi tarehe wala timestamps kwa seva ya NEXNARA. Matangazo na vipengele vingine vya tovuti bado vinatumia mtandao; hiyo ni tofauti na ubadilishaji.

Unahitaji kukagua Unix timestamp? Fungua Kigeuzi cha tarehe na saa ulinganishe sekunde na milisekunde.

FAQ

Kwa nini Unix timestamp yangu inaonyesha 1970?

Mara nyingi ni sekunde zilizosomwa kama milisekunde. JavaScript hushughulikia namba ndogo zaidi, hivyo tarehe inakaa mara baada ya 1970-01-01 00:00:00 UTC. Zidisha sekunde kwa 1,000 ubadilishe tena.

Je, Unix timestamps ni sekunde au milisekunde?

Kwa kawaida sekunde. API nyingi za wavuti na JavaScript Date hutumia milisekunde. Angalia kila wakati kile mfumo huo unaandika. Baadhi hutumia mikrosekunde au nanosekunde.

Nabadilishaje sekunde kuwa milisekunde?

Zidisha kwa 1,000. 1720000000 sekunde ni 1720000000000 milisekunde. Upande mwingine gawanya kwa 1,000.

Kwa nini JavaScript Date hutumia milisekunde?

Timestamp ya namba ya Date katika JavaScript inafafanuliwa kama milisekunde tangu Unix epoch. Kwa hiyo new Date(unixSeconds) si sahihi wakati unixSeconds ni sekunde za Unix.

Je, timestamp yenye tarakimu 10 daima ni sekunde?

Hapana. Kwa tarehe za kisasa mara nyingi ndivyo, na tarakimu 13 mara nyingi ni milisekunde. Idadi ya tarakimu ni dalili, si kanuni. Thibitisha kwa nyaraka au tarehe inayoeleweka.

Je, Unix timestamp ina eneo la saa?

Hapana. Unix timestamp ni wakati unaohesabiwa kutoka 1970-01-01 00:00:00 UTC. Maeneo ya saa huathiri jinsi unavyoonyeshwa, si namba yenyewe.