Kembali ke blog

Panduan Pembangun untuk Penukar Timestamp Unix

Kuasai penukar timestamp Unix. Pelajari cara menukar masa epoch kepada tarikh yang boleh dibaca manusia, mengendalikan pelbagai bahasa, dan mengelakkan kesilapan biasa yang sering dilakukan oleh pemaju.

Panduan Pembangun untuk Penukar Timestamp Unix

Penukar Unix timestamp adalah salah satu alat yang mudah tetapi tidak dapat dipisahkan yang akan anda gunakan secara berterusan sebagai seorang pembangun atau penganalisis data. Ia adalah utiliti berguna yang menterjemahkan nombor panjang yang nampaknya rawak kepada tarikh dan masa yang boleh kita fahami. Terjemahan ini adalah penting apabila anda sedang menyemak log sistem, bekerja dengan API, atau menyoal pangkalan data di mana masa disimpan dalam format yang sangat efisien ini.

Apa Itu Unix Timestamp dan Mengapa Ia Penting

Papan pemuka digital yang memaparkan Unix timestamp 1609459200, bersama dengan butiran untuk saat, milisaat, dan mikrosaat.

Sebelum anda benar-benar menghargai penukar yang baik, anda perlu memahami apa nombor itu sebenarnya adalah. Pada intinya, Unix timestamp hanyalah pengiraan berterusan saat. Ia mengesan jumlah total saat yang telah berlalu sejak 00:00:00 UTC pada 1 Januari 1970. Saat tertentu dalam masa ini terkenal dikenali sebagai "epoch Unix."

Jadi mengapa kaedah ini? Kesederhanaan dan kecekapan. Menyimpan masa sebagai satu integer tunggal adalah jauh lebih padat dan berprestasi berbanding dengan rentetan panjang seperti "Jumaat, 1 Januari 2021 12:00:00 AM GMT". Ini menjadikannya sempurna untuk beberapa bidang utama:

  • Penyimpanan Pangkalan Data: Timestamp adalah kecil, menjadikannya cepat untuk diindeks dan disoal. Ini adalah kemenangan besar untuk prestasi.
  • Muatan API: Menghantar satu nombor ke sana sini adalah jauh lebih ringan pada jalur lebar berbanding menghantar rentetan tarikh penuh, yang membawa kepada masa respons yang lebih cepat.
  • Fail Log: Apabila anda sedang menganalisis log dari puluhan sistem yang berbeza, mempunyai timestamp yang seragam dan tidak bergantung kepada bahasa adalah penyelamat.
  • Pengiraan: Perlu tahu berapa lama proses berlangsung? Cukup tolak timestamp mula dari timestamp akhir. Ia adalah matematik integer yang mudah.

Saat vs. Milisaat dan Lebih Lagi

Unix timestamp klasik adalah nombor 10-digit yang mewakili saat. Tetapi seiring dengan perkembangan teknologi, keperluan untuk pengukuran masa yang lebih terperinci semakin meningkat. Di sinilah anda akan mula melihat panjang timestamp yang berbeza, dan ini adalah satu kesilapan biasa.

Berikut adalah ringkasan cepat tentang apa yang biasanya anda akan temui di luar sana. Mengelirukan satu dengan yang lain adalah kesilapan klasik "off-by-a-thousand" yang boleh menyebabkan beberapa bug yang sangat membingungkan.

Format Unix Timestamp Biasa Secara Ringkas

Unit Digit Kes Penggunaan Tipikal Nilai Contoh (untuk saat yang sama)
Saat 10 Standard untuk kebanyakan sistem backend, pangkalan data, dan API. 1609459200
Milisaat 13 Sangat biasa dalam teknologi web, terutamanya JavaScript. 1609459200000
Mikrosaat 16 Digunakan dalam perdagangan frekuensi tinggi atau pengkomputeran saintifik. 1609459200000000

Mendapatkan format-format ini dengan betul adalah kunci. Jika alat menjangkakan saat dan anda memberinya milisaat, anda akan mendapatkan tarikh yang ribuan tahun di masa depan. Ia adalah kesilapan yang pernah kita semua buat pada suatu ketika!

Masalah Tahun 2038 yang Terkenal

Kesederhanaan elegan Unix timestamp juga menciptakan bom waktu yang berdetik: "masalah Tahun 2038." Pada sistem 32-bit yang lebih lama, timestamp disimpan sebagai integer 32-bit bertanda. Masalahnya adalah bahawa jenis integer ini mempunyai had—ia tidak dapat menyimpan nombor yang lebih besar daripada 2,147,483,647.

Pada 19 Januari 2038, pada 03:14:07 UTC, jumlah saat sejak epoch akan melebihi had itu. Apabila ia berlaku, integer akan "membungkus" dan menjadi nombor negatif. Ini akan menyebabkan sistem yang terdedah mentafsirkan tarikh sebagai kembali pada 1901, yang boleh merosakkan berbilion peranti warisan yang masih ada. Anda boleh mendapatkan lebih banyak pandangan mengenai epoch Unix dan impaknya dari pakar di StrongDM.

Nasib baik, ini bukan sesuatu yang kebanyakan kita perlu risaukan setiap hari. Sebahagian besar sistem moden telah beralih kepada integer 64-bit untuk pengukuran masa. Integer 64-bit adalah begitu besar sehingga ia tidak akan melimpah selama 292 bilion tahun, secara efektif menyelesaikan masalah ini untuk selamanya.

Namun, ia adalah sepotong sejarah pengkomputeran yang hebat dan pengetahuan kritikal jika anda pernah mendapati diri anda bekerja pada sistem terbenam yang lebih lama atau pangkalan kod warisan. Memahami asas-asas ini menjadikan mana-mana penukar Unix timestamp alat yang jauh lebih berkuasa di tangan anda.

Menjadikan Penukaran Tanpa Usaha di Penyemak Imbas Anda

Sementara mengeluarkan arahan terminal atau petikan kod berfungsi, ia tidak selalu cara terpantas untuk menyelesaikan sesuatu. Kadang-kadang, anda hanya memerlukan jawapan sekarang, tanpa memecahkan fokus anda atau menukar tetingkap. Di sinilah alat berasaskan penyemak imbas yang baik benar-benar membuktikan nilainya, terutamanya penukar Unix timestamp yang didedikasikan yang berada tepat di dalam penyemak imbas anda.

Magik sebenar di sini adalah tentang kekal dalam aliran. Bayangkan ini: anda sedang menyemak respons API dalam alat pemaju penyemak imbas anda dan melihat timestamp.

Daripada membuka tab lain atau memulakan terminal, anda hanya menekan pintasan papan kekunci yang cepat, tampal nombor, dan dapatkan jawapan anda dengan serta-merta. Itulah jenis aliran kerja yang lancar yang anda dapat dengan alat seperti ShiftShift Extensions, yang mengumpulkan pelbagai utiliti berguna dalam satu Palet Perintah.

Dapatkan Jawapan Segera dengan Pintasan Papan Kekunci

Semua ini bergantung kepada kelajuan. Dengan alat seperti ShiftShift, ketukan dua kali yang cepat pada kunci Shift (atau Cmd+Shift+P pada Mac) membuka bar perintah. Hanya mula menaip "timestamp," dan penukar akan muncul. Tampal nilai anda, dan anda akan mendapat tarikh yang boleh dibaca manusia dengan serta-merta.

Inilah yang kelihatan seperti—Palet Perintah sudah bersedia dan menunggu untuk menukar timestamp tepat di atas halaman semasa anda.

Bahagian terbaik adalah bagaimana ia berintegrasi tanpa mengganggu anda. Penukar adalah hanya salah satu daripada banyak alat yang tersedia dalam overlay yang sama, jadi anda tidak perlu meninggalkan apa yang anda lakukan.

Pendekatan ini adalah penyelamat bagi pembangun, penguji, dan sesiapa sahaja yang praktikalnya hidup dalam penyemak imbas mereka. Tambahan pula, penukaran berlaku sepenuhnya di mesin anda. Data sensitif daripada log atau respons API tidak pernah meninggalkan komputer anda, yang merupakan kemenangan besar untuk privasi.

Dapat menukar timestamp, memformat blob JSON yang bersepah, dan kemudian mengira perbezaan masa—semuanya dari antara muka yang sama—adalah penjimatan masa yang besar. Ia mengubah proses yang canggung dan pelbagai alat menjadi satu tindakan yang lancar.

Lebih Dari Sekadar Alat Satu-Trik

Utiliti hebat dalam penyemak imbas jarang hanya satu alat; ia adalah sebahagian daripada keseluruhan toolkit. Anda sering akan mendapati diri anda menggunakan penukar timestamp bersama fungsi lain.

Contohnya, anda mungkin menggabungkannya dengan:

  • Formatter JSON atau SQL untuk membersihkan beberapa kod sebelum anda mengeluarkan timestamp.
  • Calculator terbina dalam untuk melakukan matematik cepat pada nilai epoch. (Anda boleh mencuba alat serupa di halaman kalkulator ShiftShift untuk melihat bagaimana ia berfungsi).
  • Alat perbandingan teks untuk mengesan perbezaan antara dua respons API, termasuk timestamp.

Memiliki semua keperluan ini di satu tempat mencipta aliran kerja yang jauh lebih cepat dan lebih koheren. Ia bukan sekadar tentang keselesaan—ia tentang menghapuskan semua gangguan kecil yang berulang yang terkumpul dan membunuh produktiviti anda sepanjang hari.

Penukaran Timestamp Praktikal dalam Kod

Jika anda seorang pembangun, anda tahu bahawa mengendalikan timestamp adalah sebahagian daripada pekerjaan. Tetapi mari kita jujur, sintaksnya tidak pernah sama dari satu bahasa ke bahasa lain. Bahagian ini adalah lembaran cheat anda, dipenuhi dengan potongan kod yang boleh anda ambil dan gunakan dengan segera untuk platform yang anda sebenarnya bekerja. Tiada lagi menggali melalui thread Stack Overflow lama—hanya contoh praktikal untuk memulakan anda.

Contoh kod dalam JavaScript, Python, dan SQL untuk menukar timestamp Unix.

Sama ada anda sedang mengendalikan data di frontend web, menulis skrip Python, atau menyoal pangkalan data, menukar masa epoch adalah kemahiran asas. Kami akan melalui senario yang paling biasa, dari menukar integer epoch menjadi string yang boleh dibaca dan kemudian melakukannya semua secara terbalik.

Menukar Timestamps dalam JavaScript

Objek Date JavaScript adalah alat utama anda di sini, tetapi ia mempunyai satu keanehan besar yang sering mengelirukan pembangun: ia beroperasi dalam milisaat, bukan saat. Ini adalah sumber klasik bug apabila frontend anda bercakap dengan backend yang menggunakan timestamp standard 10-digit, berasaskan saat.

Untuk menukar timestamp Unix standard (dalam saat) dengan betul menjadi objek Date, anda perlu mengalikan ia dengan 1000.

// Timestamp Unix standard 10-digit (dalam saat)
const unixTimestamp = 1672531200;

// Tukar kepada milisaat, kemudian buat objek Date
const dateObject = new Date(unixTimestamp * 1000);

// Format menjadi string UTC yang boleh dibaca
// Output: Sun, 01 Jan 2023 00:00:00 GMT
console.log(dateObject.toUTCString());

Perlu timestamp semasa? Date.now() memberikannya kepada anda dalam milisaat. Hanya ingat untuk membahagikan dengan 1000 dan membundarkan ke bawah sebelum menghantar timestamp standard 10-digit kembali kepada API.

Menangani Penukaran dengan Python

Di backend, modul datetime Python adalah kuasa besar. Ia sangat fleksibel dan mempunyai sokongan yang hebat untuk penukaran yang menyedari zon waktu, menjadikannya pilihan yang boleh dipercayai untuk perkhidmatan yang perlu mengendalikan masa dengan ketepatan di seluruh pelbagai kawasan.

Inilah cara yang mudah untuk menukar timestamp dengan perpustakaan datetime:

import datetime

Timestamp Unix standard 10-digit

unix_timestamp = 1672531200

Tukar timestamp menjadi objek datetime

datetime_obj = datetime.datetime.fromtimestamp(unix_timestamp)

Formatkan menjadi string yang bersih dan boleh dibaca manusia

Output: 2023-01-01 00:00:00

print(datetime_obj.strftime('%Y-%m-%d %H:%M:%S'))
Pendekatan mudah ini memberikan anda cara yang bersih dan boleh dipercayai untuk mengurus masa epoch dalam aplikasi Python anda. Dan jika anda bekerja dengan struktur data kompleks seperti JSON yang mengandungi timestamp, anda mungkin mendapati panduan kami tentang menggunakan formatter JSON berguna untuk debugging.

Penukaran Pangkalan Data dengan SQL

Pangkalan data sering menyimpan masa sebagai timestamp Unix kerana ia efisien. Berita baiknya ialah kebanyakan dialek SQL mempunyai fungsi terbina dalam untuk mengendalikan penukaran ini terus di dalam pertanyaan anda.

Ini jauh lebih efisien daripada menarik cap waktu integer mentah dan menukarnya dalam kod aplikasi anda.

Cap waktu Unix hampir universal, digunakan dalam lebih daripada 90% bahasa pengaturcaraan—daripada Date.now() dalam JavaScript kepada time.time() dalam Python—yang menggerakkan trilion operasi harian. Mendapatkan zon waktu yang betul adalah kritikal; penukar unix timestamp yang kukuh boleh mengendalikan lebih daripada 400 zon IANA, yang membantu mencegah kesilapan dalam anggaran 62% aplikasi global yang tidak menguruskan zon waktu secara eksplisit. Anda boleh mendapatkan lebih banyak butiran mengenai penerimaan global alat ini di Fossa.

Bagi pemaju, kemampuan untuk memformat SQL, menukar cap waktu, dan mengira perbezaan epoch tanpa pernah meninggalkan mesin anda adalah kemenangan produktiviti yang besar. Pendekatan berasaskan tempatan ini juga memastikan anda mematuhi piawaian privasi data moden seperti GDPR dan CCPA.

Contoh MySQL

Dalam MySQL, fungsi FROM_UNIXTIME() adalah yang paling sering anda gunakan. Ia mengambil integer epoch dan menukarnya dengan kemas kepada format DATETIME standard.

SELECT FROM_UNIXTIME(1672531200);
-- Mengembalikan: '2023-01-01 00:00:00'
Untuk pergi ke arah sebaliknya—daripada rentetan tarikh kembali kepada cap waktu epoch—hanya gunakan UNIX_TIMESTAMP().

SELECT UNIX_TIMESTAMP('2023-01-01 00:00:00');
-- Mengembalikan: 1672531200

Contoh PostgreSQL

PostgreSQL menggunakan fungsi yang sedikit berbeza tetapi sama kuat: to_timestamp(). Fungsi ini secara langsung menukarkan cap waktu Unix kepada nilai TIMESTAMP WITH TIME ZONE.

SELECT to_timestamp(1672531200);
-- Mengembalikan: 2023-01-01 00:00:00+00
Oleh kerana ia peka terhadap zon waktu secara langsung, ia adalah pilihan yang sangat kukuh untuk aplikasi yang menyajikan audiens global di mana ketepatan masa adalah tidak boleh dirunding.

Menguasai Penukaran Cap Waktu di Terminal

Jika anda bekerja di baris arahan, beralih kepada pelayar atau GUI untuk penukaran cap waktu yang cepat adalah pembunuh aliran kerja yang sebenar. Ia hanya memecahkan tumpuan anda. Berita baiknya adalah anda tidak perlu; kedua-dua Linux dan macOS mempunyai alat asli yang kuat untuk mengendalikan penukaran ini tanpa pernah meninggalkan terminal.

Utiliti yang menjadi pilihan untuk ini adalah arahan date yang sederhana. Ia terdapat di hampir setiap sistem yang menyerupai Unix, tetapi ada satu masalah: sintaks untuk menggunakannya sebagai unix timestamp convertor adalah berbeza antara Linux (GNU) dan macOS (BSD). Mengetahui perbezaan ini adalah kunci untuk mendapatkan hasil yang betul setiap kali.

Menukar Cap Waktu di Linux

Di Linux, sintaksnya bersih dan mudah diingat. Anda hanya menggunakan bendera -d untuk menentukan tarikh, tetapi anda perlu memberitahu bahawa anda memberikan cap waktu epoch dengan menambah simbol @ di hadapan.

Katakan anda sedang menyemak log dan melihat cap waktu 1704067200. Untuk melihat apa maksudnya, anda akan menjalankan ini:

date -d @1704067200

Dengan serta-merta, anda akan mendapatkan tarikh yang boleh dibaca manusia, sesuatu seperti Mon Jan 1 00:00:00 UTC 2024. Anda juga boleh membersihkan output tersebut dengan format kustom anda sendiri.

date -d @1704067200 +"%Y-%m-%d %H:%M:%S"

Output: 2024-01-01 00:00:00

Tip Pro: Arahan ini menjadi kuasa sebenar apabila anda mula menyambungkan arahan lain ke dalamnya. Anda boleh grep cap waktu dari fail log yang besar dan memberikannya terus kepada date untuk penukaran segera. Ia menjadikan tugas penyahpepijatan berbilang langkah menjadi satu baris yang elegan.

Menangani Penukaran di macOS

Sekarang, jika anda menjalankan arahan Linux yang sama di Mac, ia akan menghasilkan ralat. Versi BSD bagi date yang digunakan oleh macOS memerlukan bendera -r sebaliknya, dan ia tidak memerlukan awalan @.

Inilah cara anda menukar cap waktu yang sama di Mac:

date -r 1704067200

Sama seperti versi Linux, anda boleh menambah pilihan pemformatan untuk mendapatkan output yang tepat yang anda inginkan.

date -r 1704067200 +"%Y-%m-%d %T %Z"

Output: 2024-01-01 00:00:00 UTC

Perbezaan kecil ini adalah halangan klasik bagi sesiapa yang sering beralih antara Linux dan macOS. Menghafal kedua-dua versi akan menyelamatkan anda dari banyak sakit kepala di masa hadapan.

Setelah anda menguasai arahan ini, anda boleh menyisipkan penukaran cap waktu secara langsung ke dalam skrip shell dan analisis log anda. Ia adalah kemahiran kecil, tetapi ia menjadikan peningkatan produktiviti yang serius, memastikan anda tetap fokus pada kerja yang penting.

Jebakan Cap Waktu yang Biasa dan Cara Menghindarinya

Bekerja dengan cap waktu Unix nampak mudah di permukaan, tetapi beberapa kesilapan klasik boleh membawa kepada pepijat yang benar-benar menjengkelkan. Masalah ini mempunyai kebiasaan buruk untuk muncul jauh dari tempat kesilapan sebenarnya berlaku, menjadikannya sangat sukar untuk disahpepijat. Anggap bahagian ini sebagai panduan lapangan anda untuk mengenal pasti dan mengelakkan perangkap cap waktu yang paling biasa yang saya lihat selama bertahun-tahun.

Kekeliruan Saat vs. Milisaat

Secara keseluruhan, kesilapan yang paling kerap adalah mengelirukan saat dengan milisaat. Cap waktu Unix standard adalah integer 10-digit yang mewakili bilangan saat sejak epoch. Tetapi banyak sistem, terutamanya dalam dunia JavaScript, bekerja dengan cap waktu 13-digit untuk milisaat.

Apabila aplikasi front-end menghantar nilai milisaat kepada backend yang mengharapkan saat, keadaan menjadi tidak teratur.

Bagi unix timestamp convertor, nombor 13-digit itu kelihatan seperti tarikh ribuan tahun di masa depan. Ini boleh merosakkan pengesahan data, logik penjadualan, dan sebarang rekod sejarah yang anda cuba simpan tanpa disedari. Ia adalah jenis kerosakan data halus yang mungkin anda tidak perasan selama berminggu-minggu.

Perangkap Zon Waktu

Perangkap lain yang menangkap bahkan pemaju berpengalaman adalah pengendalian zon waktu. Mengikut definisinya, Unix timestamp sentiasa dalam Waktu Sejagat Terkoordinasi (UTC). Ia mewakili satu momen universal dalam masa, sepenuhnya bebas dari lokasi. Perangkap ini berlaku apabila anda terlupa dan menganggap timestamp mencerminkan waktu tempatan pengguna.

Kesilapan ini biasanya berlaku apabila anda menukar timestamp kepada tarikh yang boleh dibaca tanpa menentukan zon waktu. Sistem anda sering secara lalai menggunakan waktu tempatan pelayan, yang membawa kepada kekacauan. Seorang pengguna di New York mungkin melihat waktu yang ditujukan untuk seseorang di London, tetapi ia berbeza beberapa jam.

Peraturan emas adalah mudah: sentiasa anggap timestamp sebagai UTC di backend anda. Simpan sebagai UTC, proses sebagai UTC, dan hanya tukar kepada waktu tempatan pengguna di front-end, tepat pada saat paparan.

Menangani Kesalahan Penukaran Timestamp yang Biasa

Apabila sesuatu yang tidak kena, simptomnya boleh mengelirukan. Berikut adalah jadual rujukan cepat yang saya sediakan dari pengalaman untuk membantu anda mendiagnosis dan membetulkan masalah yang paling biasa dengan cepat.

Simptom Punca Kemungkinan Penyelesaian
Tarikh berada pada tahun 52361 atau masa depan yang jauh. Milisaat vs. Saat. Anda menghantar timestamp milisaat 13-digit kepada fungsi yang mengharapkan timestamp saat 10-digit. Bahagikan timestamp dengan 1000 sebelum memproses. Sentiasa sahkan bilangan digit timestamp yang masuk.
Waktu berbeza beberapa jam, tetapi tarikh adalah betul. Pengendalian Zon Waktu yang Salah. Timestamp ditukar menggunakan waktu tempatan pelayan dan bukannya waktu pengguna atau UTC. Pastikan semua penukaran secara jelas menentukan zon waktu sasaran. Tukar kepada waktu tempatan hanya di sisi klien.
Tarikh terperangkap pada 1 Januari 1970. Timestamp Tidak Sah atau Null. Nilai timestamp mungkin 0, null, atau undefined. Tambah semakan untuk memastikan timestamp adalah integer positif yang sah sebelum cuba menukar. Sediakan nilai sandaran.
Mendapatkan "Tarikh Tidak Sah" atau ralat NaN. Jenis Data Salah. Timestamp sedang dianggap sebagai string atau jenis bukan numerik lain apabila nombor diperlukan. Secara eksplisit analisa timestamp kepada integer (parseInt() dalam JS, int() dalam Python) sebelum menggunakannya dalam fungsi tarikh.

Ingat, semakan cepat pada input boleh menyelamatkan anda berjam-jam debugging di kemudian hari.

Mengelakkan Kekaburan dengan Format Standard

Bergantung kepada timestamp integer mentah apabila menghantar data antara sistem boleh menjadi resipi untuk kekeliruan. Inilah sebabnya mengapa penyeragaman pada format string universal seperti ISO 8601 (2022-05-17T12:00:00Z) adalah langkah pertahanan yang hebat. Menukar Unix timestamps (contohnya, 1652905200) kepada format yang jelas dan mendokumentasikan diri seperti ini membantu mencegah kesilapan dalam anggaran 37% daripada panggilan API merentasi zon waktu.

Memandangkan 72% daripada syarikat Fortune 500 menggunakan Unix timestamps untuk analisis log, di mana satu kesilapan boleh menelan kos lebih dari $10,000 setiap jam dalam masa henti, ketepatan adalah segalanya. Anda boleh membaca lebih lanjut tentang bagaimana waktu epoch digunakan dalam pelbagai industri di EpochConverter.

Untuk mereka yang menguruskan pangkalan data, pengendalian timestamp yang konsisten adalah sama kritikal. Jika anda mendapati diri anda sering bergelut dengan pelbagai format timestamp dalam pangkalan data anda, panduan kami tentang menggunakan SQL formatter yang berkuasa boleh membantu anda mengekalkan pertanyaan anda bersih dan boleh diramal.

Pohon keputusan ini membantu anda memilih arahan yang betul untuk sistem pengendalian anda, mencegah kesilapan sintaks apabila anda memerlukan penukaran cepat.

Carta aliran yang menggambarkan arahan terminal untuk menukar timestamp pada sistem pengendalian Linux dan macOS.

Carta aliran di atas jelas menunjukkan perbezaan sintaks yang penting antara arahan date pada Linux (-d @...) dan macOS (-r ...)—satu perangkap biasa bagi pemaju yang bekerja merentasi pelbagai persekitaran.

Untuk melindungi kod anda, sentiasa laksanakan semakan untuk mengesahkan panjang timestamp yang masuk. Fungsi mudah yang memeriksa nilai 10-digit (saat) atau 13-digit (milisaat) boleh menangkap kesilapan ini sebelum ia merosakkan logik aplikasi anda.

Soalan Lazim Mengenai Unix Timestamps

Setelah anda memahami Unix timestamps, beberapa soalan praktikal hampir selalu timbul. Saya telah melihat ini mengelirukan pemaju di semua peringkat, jadi mari kita jelaskan tentang soalan yang paling biasa yang anda akan temui dalam kerja harian anda.

Kenapa Begitu Banyak API Menggunakan Timestamps Daripada String ISO 8601?

Ia benar-benar bergantung kepada kecekapan mentah. Unix timestamp hanyalah satu nombor, menjadikannya sangat padat berbanding dengan string seperti '2023-10-27T10:00:00Z'.

Saiz yang lebih kecil bermakna kurang data untuk dihantar melalui rangkaian, yang menjimatkan jalur lebar dan boleh mempercepatkan respons API.

Mereka juga sepenuhnya bebas bahasa. Tiada kekaburan, tiada keanehan penguraian, dan tiada format serantau yang perlu dibimbangkan. Bagi mesin, mengira nombor sentiasa lebih cepat daripada menguraikan rentetan, jadi sebarang pengiraan tarikh—seperti mengira masa antara dua peristiwa—adalah lebih murah secara pengiraan. Bagi sistem berprestasi tinggi, kesederhanaan itu adalah satu kemenangan besar.

Apakah Cara Yang Betul Untuk Mengendalikan Zon Waktu?

Ini adalah yang paling penting. Berikut adalah peraturan emas: Timestamp Unix sentiasa, sentiasa dalam UTC. Ia tidak mempunyai konsep zon waktu yang disertakan. Ia hanyalah kiraan mentah saat dari epoch.

Zon waktu hanya penting apabila anda perlu menunjukkan timestamp itu kepada manusia.

Nasihat saya? Kekalkan UTC untuk segala-galanya di backend. Simpan ia dalam pangkalan data anda sebagai timestamp UTC, lalukan melalui API anda dalam UTC, dan lakukan semua logik sisi pelayan anda dalam UTC. Satu-satunya masa anda harus menukarnya kepada zon waktu tempatan adalah di bahagian depan, tepat sebelum anda memaparkannya kepada pengguna. Amalan tunggal ini akan menyelamatkan anda daripada seluruh alam bug zon waktu dan penjimatan waktu siang.

Adakah Saya Masih Perlu Bimbang Tentang Masalah Tahun 2038?

Bagi kebanyakan projek baru, mungkin tidak. "Masalah Tahun 2038" adalah kesan daripada sistem lama yang menggunakan integer bertanda 32-bit untuk menyimpan timestamp. Setelah nombor itu menjadi terlalu besar, ia akan melingkar dan menjadi negatif, menghantar tarikh kembali ke tahun 1901.

Syukurlah, hampir semua sistem moden—daripada sistem operasi hingga pangkalan data—telah lama beralih kepada integer 64-bit. Ini secara efektif mengalihkan masalah ini jauh ke hadapan (berbilion tahun, sebenarnya) sehingga ia tidak lagi menjadi kebimbangan praktikal bagi kita.

Walau bagaimanapun, jika anda sedang menyelenggara sistem legasi atau bekerja dengan perkakasan terbenam (fikirkan peranti IoT), ia pasti sesuatu yang perlu diambil perhatian. Sentiasa tahu jenis seni bina yang anda bina.

Bagaimana Saya Boleh Menukar Timestamp Dengan Cepat Dalam Excel Atau Google Sheets?

Anda tidak perlu mengeluarkan data anda ke dalam penukar timestamp Unix yang berasingan untuk ini. Formula yang mudah sudah memadai. Dengan andaian timestamp anda berada dalam sel A1:

  • Untuk timestamp dalam saat (10 digit): =A1 / 86400 + DATE(1970,1,1)
  • Untuk timestamp dalam milisaat (13 digit): =A1 / 86400000 + DATE(1970,1,1)

Hanya masukkan formula itu, kemudian format sel sebagai "Tarikh" atau "Tarikh Masa". Ia sangat membantu apabila anda sedang menganalisis eksport data dengan cepat dan tidak mahu mengganggu aliran kerja anda.


Penat sentiasa bertukar antara penyunting anda, baris perintah, dan sedozen tab pelayar untuk tugas-tugas mudah? Suite ShiftShift Extensions menggabungkan penukar timestamp Unix yang berkuasa, pemformat JSON, pemperindah SQL, dan banyak lagi terus ke dalam pelayar anda. Segala yang anda perlukan hanya satu pintasan papan kekunci sahaja.

Dapatkan ShiftShift Extensions dan permudahkan aliran kerja anda hari ini di https://shiftshift.app

Sambungan yang Dinyatakan