tooly

Chuyển đổi Unix timestamp

Chuyển giây hoặc mili giây epoch sang ngày dễ đọc, hoặc ngày sang timestamp. Xem ISO 8601, UTC, múi giờ của bạn và mô tả tương đối như “3 ngày trước”, cùng thời gian Unix hiện tại.

Mọi thứ chạy trong trình duyệt — không gửi đi đâu cả

Cách sử dụng

  1. 1

    Dán timestamp hoặc ngày, hoặc nhấp Dùng để lấy thời gian hiện tại.

  2. 2

    Mọi định dạng được tính tức thì.

  3. 3

    Sao chép định dạng bạn cần.

Thời gian Unix trong một đoạn văn

Thời gian Unix đếm số giây đã trôi qua kể từ 00:00:00 UTC ngày 1 tháng 1 năm 1970, thời điểm được gọi là epoch. Nó hoàn toàn bỏ qua múi giờ và giờ mùa hè: tại bất kỳ khoảnh khắc nào, thời gian Unix là cùng một con số ở mọi nơi trên Trái Đất. Điều đó khiến nó trở thành định dạng tự nhiên để lưu và so sánh các thời điểm trong cơ sở dữ liệu, tệp log, các claim exp và iat của JWT, thời gian sửa đổi tệp, phản hồi API và các bộ lập lịch kiểu cron. Điểm vướng là 1700000000 chẳng có nghĩa gì với con người, và đó là việc của công cụ chuyển đổi này. Nhân tiện, con số đó là 14 tháng 11 năm 2023, 22:13:20 UTC.

Giây, mili giây và những con số dài hơn

Mỗi hệ thống đếm theo một đơn vị khác nhau:

  • Giây, 10 chữ số với các ngày hiện tại: công cụ Unix và Linux, time() của PHP, time.time() của Python (kèm phần thập phân), hầu hết cơ sở dữ liệu SQL, JWT.
  • Mili giây, 13 chữ số: Date.now() của JavaScript, System.currentTimeMillis() của Java, nhiều API JSON và sự kiện phân tích.
  • Micro giây, 16 chữ số, và nano giây, 19 chữ số: một số cơ sở dữ liệu, Go, công cụ truy vết độ phân giải cao.

Công cụ xác định đơn vị theo độ lớn. Mọi số nguyên có giá trị tuyệt đối dưới 100.000.000.000 được đọc là giây, đến 100.000.000.000.000 (14 chữ số) là mili giây, dưới 10^17 là micro giây và lớn hơn nữa là nano giây. Các ngưỡng này đúng với mọi trường hợp thực tế: nếu tính bằng giây, ngưỡng đầu tiên là năm 5138, còn tính bằng mili giây là đầu tháng 3 năm 1973.

Giá trị micro giây và nano giây được cắt về độ chính xác mili giây, vì các kết quả chỉ hiển thị đến mức đó. Đầu vào có phần thập phân như 1700000000.5 không được chấp nhận, nên hãy bỏ phần thập phân trước.

Số âm vẫn dùng được và cho ra ngày trước năm 1970: -86400 là ngày 31 tháng 12 năm 1969.

Đọc sáu kết quả

  • Unix, giây và Unix, mili giây: cùng một thời điểm ở hai đơn vị. Phần mili giây được giữ khi bạn dán chuỗi ngày có phần thời gian như .250; giá trị giây được làm tròn xuống.
  • ISO 8601: ví dụ 2023-11-14T22:13:20.000Z. Luôn theo UTC, được đánh dấu bằng Z, với độ chính xác mili giây. Đây là định dạng an toàn nhất cho API và JSON, vì nó sắp xếp đúng khi so sánh như văn bản và mọi ngôn ngữ lập trình đều phân tích được.
  • UTC: kiểu ngày của HTTP, Tue, 14 Nov 2023 22:13:20 GMT, dùng trong các header Expires, Last-Modified và cookie.
  • Múi giờ của bạn: ngày/tháng/năm với đồng hồ 24 giờ, theo sau là tên viết tắt của múi giờ (hoặc độ lệch GMT nếu không có tên viết tắt) và tên múi giờ mà trình duyệt báo, như Asia/Ho_Chi_Minh. Giờ mùa hè được áp dụng theo đúng ngày đó, không phải theo độ lệch của hôm nay.
  • Tương đối: cách diễn đạt như "hôm qua", "3 ngày nữa" hay "2 năm trước". Nó cố ý chỉ mang tính gần đúng: tháng được tính trung bình khoảng 30,4 ngày, và giá trị tự cập nhật khi trang đang mở.

Chuyển ngày tháng thành timestamp

Bạn có thể dán một ngày thay vì một con số. Chuỗi ISO 8601 là đầu vào đáng tin cậy nhất, và các quy tắc múi giờ đáng để nắm rõ vì chúng gây ra phần lớn lỗi lệch vài giờ:

  • 2024-05-01T12:00:00Z và 2024-05-01T12:00:00+02:00 mang sẵn độ lệch của chúng và không thể hiểu nhầm.
  • 2024-05-01 không có giờ được coi là nửa đêm UTC.
  • 2024-05-01T12:00 và 2024-05-01 12:00, tức ngày có giờ nhưng không có độ lệch, được coi là giờ địa phương của bạn.

Vì vậy nếu bạn ở Berlin vào mùa hè, 2024-05-01 và 2024-05-01 00:00 lệch nhau hai giờ. Khi chuyển đổi cho máy chủ hoặc API, hãy thêm Z hoặc độ lệch rõ ràng để khỏi phải đoán.

Các định dạng khác, như May 1, 2024 12:00, phụ thuộc vào bộ phân tích ngày của trình duyệt và có thể hoạt động khác nhau giữa Chrome, Firefox và Safari. Định dạng có ngày đứng trước, như 01/05/2024, sẽ bị đọc là tháng đứng trước theo kiểu Mỹ hoặc bị từ chối, nên hãy tránh chúng.

Những cạm bẫy đáng biết

  • Giây nhuận. Thời gian Unix giả định mọi ngày có đúng 86.400 giây. 27 giây nhuận được thêm từ năm 1972 không được tính, điều này chỉ quan trọng với việc đo thời gian khoa học chính xác.
  • Sự cố năm 2038. Các hệ thống lưu thời gian Unix dưới dạng số nguyên có dấu 32 bit sẽ bị tràn tại 2147483647, tức 19 tháng 1 năm 2038, 03:14:07 UTC. Dán con số đó vào để xem. Hệ thống 64 bit hiện đại không bị ảnh hưởng, nhưng thiết bị nhúng cũ và một số định dạng tệp thì có thể.
  • Lệch đồng hồ. Nếu JWT bị từ chối với lý do "chưa có hiệu lực" hoặc "đã hết hạn", hãy so sánh iat và exp của nó với Thời gian Unix hiện tại đang chạy ở đầu trang. Chênh lệch vài phút cho thấy đồng hồ bị sai chứ không phải token hỏng.

Để đọc các claim của token, hãy giải mã phần giữa bằng Bộ mã hóa và giải mã Base64 và sắp xếp JSON gọn gàng bằng Định dạng và kiểm tra JSON. Việc chuyển đổi chạy trong trình duyệt, dùng đồng hồ và thiết lập múi giờ của chính nó.

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

Giây hay mili giây?

Đơn vị được nhận diện tự động theo độ lớn: giá trị dưới 100 000 000 000 được coi là giây, đến 14 chữ số là mili giây, 15–17 chữ số là micro giây và dài hơn nữa là nano giây.

Chấp nhận định dạng ngày nào?

ISO 8601 (2024-05-01T12:00:00Z), 2024-05-01 12:00 và bất cứ gì bộ phân tích Date của trình duyệt hiểu.

Dùng múi giờ nào?

Hiển thị cả UTC và múi giờ của trình duyệt.

Có gửi gì lên máy chủ không?

Không. Chuyển đổi chạy trong trình duyệt.

Công cụ liên quan