Sự kiện kỷ niệm 1.000.000.000 giây kể từ thời điểm bắt đầu thời gian UNIX đã được tổ chức tại một bữa tiệc do DKUUG tổ chức ở Copenhagen, Đan Mạch vào ngày 09/09/2001 lúc 03:46:40.

Lịch sử

sửa

Khái niệm thời gian Unix xuất hiện cùng với sự phát triển của hệ điều hành Unix tại Bell Labs vào đầu thập niên 1970. Mốc thời gian được chọn là 00:00:00 UTC ngày 1 tháng 1 năm 1970, còn được gọi là Unix epoch hay đơn giản là Epoch.

Ban đầu thời gian Unix được lưu dưới dạng số nguyên có dấu 32 bit trên nhiều hệ thống máy tính thời kỳ đầu. Khi nhu cầu xử lý thời gian dài hơn và chính xác hơn tăng lên, nhiều hệ thống hiện đại đã chuyển sang sử dụng số nguyên 64 bit.

Đặc điểm

sửa
  • Thời gian Unix không chứa thông tin về múi giờ, toàn bộ giá trị đều được tính theo UTC.
  • Một ngày trong thời gian Unix luôn được xem là có đúng 86400 giây.
  • Thời gian Unix thường được lưu dưới dạng:
    • giây (seconds)
    • mili giây (milliseconds)
    • micro giây (microseconds)
    • nano giây (nanoseconds)
  • Hầu hết các hệ điều hành và ngôn ngữ lập trình hiện đại đều hỗ trợ Unix time.
  • Unix time cho phép việc tính toán khoảng cách thời gian trở nên đơn giản thông qua các phép cộng và trừ số nguyên.

Biểu diễn

sửa

Trên hệ thống 32 bit, thời gian Unix thường được lưu bằng số nguyên có dấu 32 bit với phạm vi:

đến

Điều này tương ứng với khoảng thời gian từ:

  • 20:45:52 ngày 13 tháng 12 năm 1901 UTC

đến

  • 03:14:07 ngày 19 tháng 1 năm 2038 UTC

Sau thời điểm này, giá trị sẽ bị tràn số và quay về giá trị âm, gây ra sự cố năm 2038.

Trên hệ thống 64 bit, thời gian Unix thường được lưu bằng số nguyên có dấu 64 bit. Giới hạn này lớn đến mức có thể biểu diễn thời gian trong khoảng hàng trăm tỷ năm nên gần như không còn giới hạn thực tế đối với các ứng dụng hiện đại.

Ví dụ

sửa
Thời điểm (UTC) Giá trị Unix time
00:00:00 ngày 1 tháng 1 năm 1970 0
00:00:01 ngày 1 tháng 1 năm 1970 1
00:00:00 ngày 1 tháng 1 năm 2000 946684800
00:00:00 ngày 1 tháng 1 năm 2025 1735689600
03:14:07 ngày 19 tháng 1 năm 2038 2147483647

Ứng dụng

sửa

Thời gian Unix được sử dụng rộng rãi trong:

  • Các hệ điều hành Unix-like
  • Linux
  • Android
  • macOS
  • iOS
  • Cơ sở dữ liệu
  • API
  • Nhật ký hệ thống (log)
  • Đồng bộ hóa thời gian mạng
  • Token xác thực và bảo mật
  • Hệ thống tập tin
  • Máy chủ web và dịch vụ Internet

Trong lập trình

sửa

Nhiều ngôn ngữ lập trình hỗ trợ thao tác với thời gian Unix.

Ví dụ trong JavaScript:

Date.now()

Ví dụ trong Python:

import time
time.time()

Ví dụ trong ngôn ngữ C:

time(NULL);

Ví dụ trong PHP:

time();

Ví dụ trong Bash/Linux:

date +%s

Giây nhuận

sửa

Thời gian Unix không tính trực tiếp giây nhuận. Khi UTC thêm một giây nhuận, Unix time thường sẽ lặp lại hoặc bỏ qua một giá trị thời gian tùy theo cách triển khai của hệ điều hành.

Do đó thời gian Unix không phải là biểu diễn hoàn toàn chính xác của UTC trong mọi trường hợp.

Chuyển đổi

sửa

Unix time có thể được chuyển đổi sang ngày giờ thông thường bằng nhiều công cụ trực tuyến hoặc thư viện lập trình.

Một số hệ thống lưu Unix time theo mili giây thay vì giây. Ví dụ:

Đơn vị Ví dụ
Giây 1716115200
Mili giây 1716115200000

Giới hạn

sửa

Một số hạn chế của thời gian Unix:

  • Không biểu diễn chính xác giây nhuận
  • Dễ gây nhầm lẫn giữa đơn vị giây và mili giây
  • Các hệ thống 32 bit cũ có thể gặp sự cố năm 2038
  • Không phù hợp để biểu diễn thời gian trước năm 1901 trên hệ thống 32 bit có dấu

Xem thêm

sửa

Tham khảo

sửa