Mengapa Unix memiliki konsep waktu sendiri? Apa epoch dan apa masalah Y2038?

Waktu Unix adalah cara untuk merepresentasikan tanggal dan waktu tertentu, yang digunakan oleh Linux, macOS, dan banyak sistem interoperable lainnya. Ini sangat tersebar luas, sehingga Anda mungkin menggunakannya tanpa menyadarinya. Namun, setelah Anda memahami waktu Unix, Anda akan melihatnya dalam banyak konteks. Beberapa alat dapat membantu Anda bekerja dengan waktu Unix.

Apa Tujuan dari Unix Time?

Waktu Unix adalah hitungan detik total sejak waktu dan tanggal tetap. Ini adalah format tanggal / waktu (atau stempel waktu) yang terlihat berbeda dari tanggal dan waktu yang dapat dibaca manusia sebelumnya. Ini murni untuk alasan efisiensi. Dibutuhkan lebih sedikit ruang untuk menyimpan satu angka yang mewakili detik daripada untuk menyimpan nilai terpisah untuk tahun, bulan, jam, dll.

Tentu saja, dalam istilah modern, perbedaan ruang tidak terlalu banyak. Tetapi pertimbangkan bahwa Unix berasal dari akhir 1960-an ketika penyimpanan yang tersedia jauh lebih kecil. Stempel waktu juga banyak digunakan, sehingga penyimpanannya bertambah. Misalnya, setiap file memiliki tiga stempel waktu yang terkait dengannya.

instagram viewer

Formatnya hampir tidak mungkin diterjemahkan di kepala Anda kecuali Anda seorang jenius matematika. Tetapi masih memiliki beberapa keunggulan dibandingkan alternatif yang lebih mudah dibaca seperti Rabu, 21 Okt 2015 07:28:00 GMT. Anda dapat memesan dua stempel waktu Unix dengan sangat mudah, dalam sekejap. Biasanya juga lebih cepat untuk mengetahui perbedaan antara dua stempel waktu. Hal ini terutama berlaku untuk tanggal yang berdekatan, seperti pada hari yang berdekatan.

Tentang Epoch

Jadi, waktu Unix adalah jumlah total detik sejak titik waktu tertentu. Tapi apa titik waktu itu? Nya 00:00:00 UTC di 1 Januari 1970. Ini sering disebut sebagai Unix Epoch. Programmer memilih tanggal ini untuk waktu yang tidak diinginkan karena itu adalah tanggal putaran terdekat ketika mereka menemukan waktu Unix.

Anda mungkin pernah melihat tanggal ini ketika ada yang tidak beres. Ini jelas bug, tapi yang terlihat sangat aneh saat menghasilkan tanggal sebelum waktu banyak dari kita lahir! Ini sepenuhnya bisa dimengerti, jika Anda tahu tentang waktu Unix. Jika ada sistem yang mencoba menampilkan stempel waktu yang tidak memiliki nilai apa pun, seringkali sistem tersebut akan diterjemahkan ke 0 dan menghasilkan tanggal periode yang tepat.

Format Data Waktu Unix

Sebenarnya, tidak ada. Tipe data asli adalah bilangan bulat 32-bit, dan ini sering terjadi, bahkan di sistem yang jauh lebih bertenaga.

Tipe data ini memungkinkan nilai untuk menyimpan total 2 ^ 32 detik, yang berarti lebih dari 136 tahun. Nilai ini biasanya ditandatangani, artinya bisa negatif atau positif. Jadi, ini biasanya mewakili 68 tahun di kedua sisi zaman yaitu 1902-2038.

Periode ini masih terbatas, tentunya. Tetapi penggunaan utama format stempel waktu adalah untuk konsep seperti modifikasi file. Sangat dibutuhkan untuk mewakili waktu yang dekat dengan masa kini, bukan sejarah kuno atau jauh ke masa depan. Bahkan untuk aplikasi seperti kalender, jarang ada kebutuhan untuk merepresentasikan tanggal lebih dari beberapa dekade ke depan.

Namun bukan berarti rentang waktu yang terbatas ini tanpa masalah…

Masalah Tahun 2038

Bug Y2K (salah satu kesalahan pemrograman terburuk dalam sejarah) mempengaruhi sistem komputer yang menyimpan tahun sebagai nilai dua digit. Ketika tahun 2000 tiba, sistem seperti itu memperlakukannya seolah-olah tahun 1900. Dalam peristiwa tersebut, bencana ini tidak sesulit yang dikhawatirkan, terutama karena banyak orang menghabiskan banyak waktu dan tenaga sebelumnya untuk mempersiapkannya.

10 Kesalahan Pemrograman Terburuk dalam Sejarah

Di masa lalunya yang bertingkat, pengkodean juga menyebabkan kehancuran. Contoh dari sedikit kode buruk menyebabkan bencana di tingkat utama. Berikut ini adalah 10 kesalahan pemrograman terburuk dalam sejarah.

Jika Anda memperhatikan di bagian sebelumnya, Anda mungkin telah melihat masalah serupa yang dapat memengaruhi waktu Unix. Nah, waktu Unix memang memiliki masalah datanya sendiri: masalah Y2k38. (Ini sering disebut sebagai masalah, bukan bug; mungkin kita menjadi lebih optimis sejak tahun 2000!) Ketika waktu Unix benar-benar habis pada tahun 2038, sistem akan memperlakukan tanggal baru sebagai tahun 1902 atau 1970. Atau mungkin mereka akan gagal sama sekali.

Setidaknya masalah ini tidak akan menyerang kita pada tengah malam di Malam Tahun Baru. Detik terakhir dari waktu Unix 32-bit akan jatuh pada tanggal 19 Maret. Pada akhirnya, kami kemungkinan akan meningkatkan sebagian besar sistem pada tahun 2038 atau pada saat itu juga akan menjadi usang.

Beberapa Sumber Daya Stempel Waktu yang Berguna

Itu Konverter Epoch situs mungkin adalah konverter stempel waktu paling komprehensif yang tersedia. Ini dimulai dengan menampilkan waktu Unix saat ini — secara real-time — dan menambahkan hampir semua fitur yang bisa dibayangkan di atasnya. Penggunaan utamanya adalah untuk mengubah antara stempel waktu dan tanggal yang dapat dibaca manusia, di kedua arah.

Dan's Tools adalah kumpulan besar aplikasi web yang berguna, salah satunya adalah konverter cap waktu. Ini lebih mendasar, tetapi memiliki presentasi yang sangat bersih dan mudah digunakan.

Waktu adalah menghadirkan tampilan lain yang bahkan lebih minimalis. Ini menunjukkan waktu dalam berbagai format, termasuk waktu Unix. Ini termasuk waktu saat ini dalam judul halamannya yang berguna.

Di Linux dan macOS, file tanggal Program adalah utilitas inti untuk menangani tanggal / waktu, termasuk cap waktu Unix. Dipanggil tanpa argumen apa pun, ini mengembalikan tanggal / waktu saat ini dalam format yang dapat dibaca manusia:

$ date
Rab 10 Feb 12:28:30 GMT 2021

Jika Anda membutuhkan tanggal / waktu saat ini dalam waktu Unix, gunakan +% s argumen:

$ tanggal +% s
1612960114

Anda dapat mengonversi dari tanggal yang dapat dibaca manusia menjadi stempel waktu menggunakan -d tandai jika versi Anda tanggal mendukungnya. Sebagian besar versi Linux seharusnya, secara default:

$ date -d "2 Jan 1970" +% s
82800

Di macOS, tanggal adalah program berbeda, yang membutuhkan kumpulan tanda berbeda:

$ date -j -f "% b% d% Y% T" "02 Jan 1970 00:00:00" "+% s"
82800

Pergi ke arah lain, Anda dapat mengonversi dari stempel waktu Unix menggunakan -r bendera:

$ date -r 1600000000
Min 13 Sep 2020 13:26:40 BST

Beberapa program lain menggunakan % s format untuk menangani waktu Unix. Misalnya, jika Anda ingin menampilkan tanggal modifikasi file dalam waktu Unix, dengan Versi Linux ls, Anda dapat menggunakan berikut ini:

$ ls -l --time-style = +% s index.tmp.html
-rw-r - r-- 1 ubuntu ubuntu 17862 1521649818 index.tmp.html

Cara Menggunakan Waktu Unix dalam Bahasa Pemrograman

PHP memiliki waktu() fungsi yang mengembalikan stempel waktu Unix saat ini. Nya tanggal() function mengambil stempel waktu sebagai argumen keduanya:

$ php -r 'tanggal echo ("Y-m-d", waktu ());'
2021-02-11

JavaScript mendekati berbagai hal dengan cara yang menarik. Ini memiliki Date.now () metode untuk mendapatkan jumlah milidetik sejak epoch Unix. Tentu saja, Anda dapat membaginya dengan 1.000 dan membulatkan hasilnya untuk memberikan waktu Unix yang setara dalam hitungan detik:

> Math.floor (Date.now () / 1000)
1613083012

Memahami Waktu Unix

Waktu Unix adalah konsep sederhana yang muncul di banyak tempat. Setelah Anda memahaminya, Anda mungkin merasa ini cukup berguna, misalnya saat menghitung perbedaan waktu. Anda juga dapat mengenali kapan itu mungkin menjadi penyebab bug tertentu.

Konsep seperti epoch dan timestamp adalah bagian penting untuk memulai dengan Linux. Untuk mengetahui lebih lanjut tentang hal-hal penting seperti ls, lihat panduan kami untuk perintah dasar Linux.

Surel
9 Perintah Dasar untuk Memulai Linux

Ingin membiasakan diri dengan Linux? Mulailah dengan perintah Linux dasar ini untuk mempelajari tugas komputasi standar.

Topik-topik terkait
  • Tidak ditentukan
Tentang Penulis
Bobby Jack (27 Artikel Dipublikasikan)

Bobby adalah penggemar teknologi yang bekerja sebagai pengembang perangkat lunak selama hampir dua dekade. Dia sangat menyukai game, bekerja sebagai Editor Ulasan di Majalah Switch Player, dan tenggelam dalam semua aspek penerbitan online & pengembangan web.

Selebihnya Dari Bobby Jack

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk mendapatkan tip teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Satu langkah lagi…!

Harap konfirmasi alamat email Anda di email yang baru saja kami kirimkan kepada Anda.

.