Trình Tạo Dấu Thời Gian Unix

Chọn ngày và giờ để tạo timestamp Unix, timestamp tính bằng mili giây và chuỗi ISO 8601.

Timestamp Unix (giây)
Mili giây
ISO 8601
Dễ đọc (UTC)

Cách hoạt động

  1. Chuyển ngày sang timestamp: nhập ngày và giờ với bộ chọn, sau đó nhấp Tạo để có timestamp Unix theo giây và mili giây.
  2. Chuyển timestamp sang ngày: dán một timestamp Unix (giây hoặc mili giây) để chuyển ngược thành ngày và giờ dễ đọc.
  3. Lấy timestamp hiện tại: nhấp « Bây giờ » để lấy ngay timestamp Unix của thời điểm hiện tại.

Tại sao sử dụng trình tạo timestamp Unix?

Timestamp Unix là ngôn ngữ phổ quát của thời gian trong tin học, một số nguyên duy nhất đại diện cho số giây trôi qua kể từ ngày 1 tháng 1 năm 1970 (UTC). Chúng cung cấp năng lượng cho cơ sở dữ liệu, API, nhật ký, mã thông báo xác thực và lập lịch sự kiện. Chuyển đổi thủ công giữa timestamp và ngày dễ đọc liên quan đến tính toán múi giờ dễ bị sai. Công cụ này xử lý đúng việc chuyển đổi theo cả hai hướng, tiết kiệm thời gian và tránh các lỗi múi giờ.

Tính năng

Câu hỏi thường gặp

Timestamp Unix là gì?

Timestamp Unix là số giây trôi qua kể từ kỷ nguyên Unix, nửa đêm UTC ngày 1 tháng 1 năm 1970. Đó là biểu diễn của một thời điểm độc lập với múi giờ, làm cho nó là định dạng được ưa thích để lưu trữ và so sánh các thời điểm trong cơ sở dữ liệu và API.

Tại sao JavaScript sử dụng mili giây?

Date.now() và new Date().getTime() trong JavaScript trả về mili giây kể từ kỷ nguyên (một số 13 chữ số), trong khi các công cụ Unix và hầu hết cơ sở dữ liệu sử dụng giây (10 chữ số). Kiểm tra xem timestamp của bạn có 10 hay 13 chữ số để biết bạn có định dạng nào.

Làm thế nào để chuyển timestamp sang giờ địa phương?

Dán timestamp; công cụ tự động chuyển nó sang múi giờ cục bộ của trình duyệt của bạn. Hiển thị cho thấy cả giờ địa phương và UTC để làm việc giữa các múi giờ một cách tự tin.

Thời gian Unix đến từ đâu

Thời gian Unix được định nghĩa bởi Ken Thompson và Dennis Ritchie trong Unix First Edition (tháng 11 năm 1971). Ban đầu kernel đếm 1/60 giây kể từ 1971-01-01 trong trường 32 bit, tràn sau 2 năm 9 tháng. Đến Unix Sixth Edition (1975), cách đếm đã được đổi thành số giây kể từ 1970-01-01 00:00:00 UTC, kỷ nguyên mà mọi hệ thống giống Unix vẫn dùng ngày nay. Việc chọn lựa là tùy ý, các kỹ sư cần một ngày tròn gần với thời đại họ đang làm việc. POSIX.1 (1988) đã hệ thống hóa định nghĩa thành tiêu chuẩn chính thức, và POSIX.1-2017 (IEEE Std 1003.1-2017), phiên bản hiện tại, vẫn định nghĩa time_t là số giây kể từ kỷ nguyên, với cảnh báo rằng thời gian POSIX giả vờ giây nhuận không tồn tại. ISO 8601 (1988, hiện tại 2019) đã chuẩn hóa định dạng dễ đọc 2026-05-13T14:30:00Z, và RFC 3339 (tháng 7 năm 2002) đã thu hẹp nó thành hồ sơ ngày giờ internet rõ ràng. Date.now() của JavaScript trả về milisecond kể từ kỷ nguyên vì spec được viết vào năm 1995 khi độ chính xác dưới giây đã có nhu cầu; hầu hết các cơ sở dữ liệu và tiện ích Unix vẫn dùng giây nguyên.

Vấn đề năm 2038 (và tại sao quan trọng bây giờ)

time_t có dấu 32 bit có thể biểu diễn nhiều nhất 2.147.483.647 giây, đến vào 03:14:07 UTC Thứ Ba, 19 tháng 1 năm 2038. Một giây sau, bộ đếm cuộn về −2.147.483.648, mà hầu hết phần mềm hiểu là 13 tháng 12 năm 1901. Đây là cùng loại lỗi như Y2K nhưng do chiều rộng số nguyên, không phải định dạng ngày. Cách khắc phục là dùng time_t 64 bit (đẩy việc cuộn lại sang khoảng năm 292 tỷ). Hầu hết các hệ thống Linux 64 bit đã dùng time_t 64 bit theo mặc định; Linux 5.6 (tháng 3 năm 2020) đã làm cho time_t 64 bit cũng có sẵn trên kiến trúc 32 bit. Rủi ro còn lại sống trong các hệ thống nhúng, định dạng tệp nhị phân cũ và giao thức mạng 32 bit. Network Time Protocol (NTP) đã cuộn vào năm 2036 vì nó dùng đếm 32 bit không dấu kể từ năm 1900, NTPv4 thêm số kỷ nguyên để mở rộng nó. Nếu bạn cung cấp phần mềm xử lý ngày, hãy kiểm tra ngăn xếp của bạn trước năm 2038, đặc biệt là các cột SQL kiểu INT(11) hoặc mã C cũ với trường thời gian long.

Các định dạng timestamp bạn sẽ gặp

Khi công cụ này kiếm được công sức của mình

Lỗi tốn các nhóm hàng giờ

Câu hỏi thường gặp khác

Tại sao 1970-01-01 được chọn làm kỷ nguyên?

Tiện lợi. Các phiên bản Unix sớm vào những năm 1970 muốn một kỷ nguyên không tràn trong tuổi thọ làm việc hợp lý. 1970-01-01 là một ngày tròn gần thời đại phát triển, và bộ đếm giây 32 bit từ đó đạt thoải mái đến 2038. Lựa chọn này hiện được khắc trong POSIX.1-2017 §4.16 và là một trong những thỏa thuận đa nền tảng ổn định nhất trong phần mềm. Không có ý nghĩa vốn có cho ngày, không có sự kiện lịch sử, không có neo thiên văn, chỉ là một neo tùy ý mà mọi người đều đồng ý.

Sự khác biệt giữa UTC, GMT và thời gian Zulu là gì?

Với mục đích phần mềm, chúng đề cập đến cùng thời gian đồng hồ tường. UTC (Thời gian Phối hợp Toàn cầu) là tiêu chuẩn hiện đại, được định nghĩa bởi đồng hồ nguyên tử và BIPM. GMT (Thời gian Trung bình Greenwich) là tiêu chuẩn thiên văn Anh cũ hơn là tham chiếu thế giới de facto trước thời gian nguyên tử. Thời gian Zulu là ký hiệu NATO/quân sự cho UTC, được viết như hậu tố Z trong ISO 8601 (2026-05-13T14:30:00Z). UTC và GMT có thể khác nhau lên đến 0,9 giây vì UTC được điều khiển để giữ gần UT1 (thời gian mặt trời trung bình) qua giây nhuận, nhưng không có ứng dụng nào không dùng trực tiếp UT1 sẽ nhận thấy.

Tại sao 1970 đôi khi được hiển thị khi tôi mong đợi điều gì khác?

Hai nguyên nhân phổ biến. Đầu tiên, timestamp ở milisecond nhưng được truyền cho một hàm mong đợi giây, hoặc ngược lại, cho một ngày lệch bởi hệ số 1000. Thứ hai, giá trị là 0 hoặc NaN, cả hai đều được hầu hết thư viện ngày kết xuất là 1970-01-01T00:00:00Z. Kiểm tra chiều rộng số nguyên thô: 10 chữ số là giây, 13 là milisecond, 16 là microsecond, 19 là nanosecond.

Công cụ này sẽ xử lý timestamp âm cho các ngày trước 1970 chứ?

Có. new Date(-86400000) trả về 1969-12-31T00:00:00Z. Date của JavaScript có thể đại diện cho bất kỳ khoảnh khắc nào từ −271821-04-20 đến +275760-09-13, tức là khoảng ±100 triệu ngày từ kỷ nguyên. Ngoài phạm vi đó, API trả về Invalid Date. Đối với các ngày lịch sử, cũng nhận thức về chuyển đổi Julian-Gregorian (1582 ở các nước Công giáo, 1752 ở Anh, muộn nhất là 1923 ở Hy Lạp) nơi các ngày lịch nhảy từ 10 đến 13 ngày; các thư viện ngày khác nhau về cách xử lý điều này.

Dữ liệu timestamp của tôi có được gửi đi đâu không?

Không. Tất cả việc chuyển đổi đều chạy bằng JavaScript bên trong trình duyệt của bạn. Trang không bao giờ POST bất kỳ giá trị nào bạn nhập. Mở tab Mạng trong DevTools và chuyển đổi một timestamp, bạn sẽ thấy không có yêu cầu đi ra trong khi chuyển đổi. An toàn cho token với claim timestamp, dòng log nội bộ, hoặc bất cứ thứ gì bạn sẽ không dán vào dịch vụ lưu trữ.

Công cụ liên quan

Trình Chuyển Đổi Dấu Thời Gian Unix Miễn Phí Máy tính ngày tháng Máy tính thời lượng miễn phí Bộ hẹn giờ đếm ngược miễn phí