Menu

Chuyển đổi Unix timestamp

Chuyển đổi giữa Unix timestamp, ISO 8601, UTC và giờ địa phương.

Tác giả Nethanel Bar, Co-founder & CEO

Cập nhật lần cuối

Sẵn sàng học code thật sự?

Coddy dạy bạn bằng cách viết code thật ngay trên trình duyệt: bài học tương tác, phản hồi tức thì và AI hỗ trợ khi bạn bị kẹt.

Công cụ chuyển đổi Unix timestamp là gì?

Công cụ chuyển đổi Unix timestamp biến *thời gian epoch* (một con số duy nhất đại diện cho một thời điểm) thành ngày giờ dễ đọc, và chuyển ngày giờ ngược lại thành timestamp. Lập trình viên gặp timestamp ở khắp nơi: cột trong cơ sở dữ liệu, dòng log, response của API, sự kiện analytics, claim exp của JWT, trình kích hoạt lịch hẹn và header hết hạn cache.

Ý tưởng cốt lõi rất đơn giản: máy tính lưu thời gian dưới dạng một con số (số giây hoặc mili giây kể từ 1970-01-01 00:00:00 UTC), nhưng con người cần lịch, múi giờ và định dạng dễ đọc. Chuyển đổi giữa hai dạng này là một trong những việc gỡ lỗi phổ biến nhất trong mọi ứng dụng web hay di động.

Phần dễ nhầm lẫn nhất là *đơn vị*. POSIX và phần lớn ngôn ngữ backend dùng giây. JavaScript, Java và nhiều message broker dùng mili giây. Một số hệ thống đo lường dùng micro giây hoặc nano giây. Số có 10 chữ số gần như luôn là giây; số có 13 chữ số gần như luôn là mili giây.

Bạn sẽ học được gì khi chuyển đổi timestamp

  • Unix timestamp đo thời gian bằng *giây* hoặc *mili giây* kể từ Unix epoch (1970-01-01 00:00:00 UTC).
  • UTC là mốc tham chiếu cố định. Giờ địa phương phụ thuộc vào múi giờ của người dùng, quy tắc giờ mùa hè và cài đặt đồng hồ của thiết bị.
  • ISO 8601 (2026-04-25T12:00:00Z) là định dạng văn bản dùng được ở mọi nơi. Chữ Z ở cuối (hoặc +00:00) nghĩa là UTC; độ lệch như +02:00 nghĩa là giờ địa phương sớm hơn UTC 2 giờ.
  • Timestamp là định dạng an toàn nhất để so sánh. Hai chuỗi ISO có thể mô tả cùng một thời điểm nhưng trông khác nhau (2026-04-25T12:00:00Z và 2026-04-25T14:00:00+02:00).

Cách chuyển đổi Unix timestamp từng bước

  1. Dán giá trị

    Dán một con số (giây hoặc mili giây) hoặc một chuỗi ngày giờ. Công cụ tự nhận diện định dạng dựa vào độ dài và hình dạng.

  2. Xác nhận đơn vị

    Chuyển giữa giây và mili giây nếu công cụ đoán sai: số có 10 chữ số là giây, số có 13 chữ số là mili giây.

  3. Đọc cả hai dạng hiển thị

    Kết quả hiển thị ISO 8601 theo UTC, giờ địa phương của bạn và một cụm từ tương đối dễ đọc (3 hours ago, in 2 days).

  4. Sao chép thứ bạn cần

    Sao chép trực tiếp timestamp, chuỗi ISO hoặc giờ địa phương. Rất tiện khi điền exp của JWT, một hàng trong cơ sở dữ liệu hay một truy vấn log.

Tra cứu nhanh các định dạng timestamp

Các định dạng bạn sẽ gặp thường xuyên nhất khi làm việc với ngày giờ trong code. ISO 8601 cũng được IETF chuẩn hóa thành RFC 3339 để dùng trong các giao thức.

Định dạngVí dụNơi bạn gặp
Unix tính bằng giây1777118400Log backend, exp của JWT, time() của POSIX, Redis
Unix tính bằng mili giây1777118400000Date.now() trong JavaScript, System.currentTimeMillis() trong Java
ISO 8601 UTC2026-04-25T12:00:00ZREST API, JSON, GraphQL, tệp log
ISO 8601 có độ lệch múi giờ2026-04-25T14:00:00+02:00Lịch hẹn hiển thị cho người dùng, lời mời trên lịch
RFC 2822Sat, 25 Apr 2026 12:00:00 GMTHeader email, Date và Last-Modified của HTTP
Chỉ có ngày2026-04-25Ngày sinh, ngày lễ, không gắn với múi giờ

Ví dụ timestamp để thử

Giây và mili giây

Giây (10 chữ số)

1777118400

Mili giây (13 chữ số)

1777118400000

Hai giá trị mô tả cùng một thời điểm nếu giá trị đầu được hiểu là giây và giá trị sau là mili giây. Nhầm lẫn hai đơn vị này là lỗi timestamp phổ biến nhất.

Đọc timestamp trong API

Response
{  "id": 42,  "createdAt": 1777118400,  "expiresAt": 1777204800}

Chuyển đổi từng giá trị trước khi kết luận nó ở quá khứ hay tương lai. Phần lớn API JSON dùng Unix tính bằng giây, nhưng hãy luôn đọc tài liệu: các backend dùng nhiều JavaScript thường trả về mili giây.

So sánh giờ UTC và giờ địa phương

UTC

2026-04-25T12:00:00Z

Cùng thời điểm, +02:00

2026-04-25T14:00:00+02:00

Hai chuỗi này biểu diễn *cùng một khoảnh khắc*. Luôn lưu thời điểm theo UTC; chỉ định dạng sang giờ địa phương khi hiển thị.

Những lỗi thường gặp với timestamp

  • Trộn lẫn giây và mili giây. Chênh lệch 1000 lần có thể dịch ngày đi hàng chục năm: 1700000000 hiểu là giây thì là tháng 11 năm 2023, nhưng hiểu là mili giây thì là tháng 1 năm 1970.
  • Lưu chuỗi ngày giờ không kèm múi giờ. Mỗi hệ thống sẽ hiểu nó một kiểu: có hệ thống coi là UTC, có hệ thống coi là múi giờ địa phương của máy chủ.
  • So sánh các chuỗi ngày đã định dạng ('2026-04-25') thay vì so sánh timestamp. Hai chuỗi ISO hợp lệ có thể mô tả cùng một thời điểm ở các định dạng khác nhau.
  • Quên các thời điểm chuyển giờ mùa hè khi lên lịch sự kiện lặp lại theo giờ địa phương. Hãy luôn dùng UTC làm nguồn dữ liệu chuẩn.
  • Tin đồng hồ thiết bị là chính xác cho các mốc thời hạn liên quan đến bảo mật (token hết hạn, OTP). Hãy dùng đồng hồ máy chủ kèm một khoảng sai lệch cho phép nhỏ.

Câu hỏi thường gặp về Unix timestamp

Unix timestamp là gì?
Unix timestamp (còn gọi là thời gian epoch) là số giây (hoặc mili giây) đã trôi qua kể từ 1970-01-01 00:00:00 UTC. Đó là một con số duy nhất đại diện cho một thời điểm cụ thể, không phụ thuộc vào múi giờ nào.
Vì sao có timestamp 10 chữ số và có cái 13 chữ số?
Unix timestamp 10 chữ số tính bằng giây. Loại 13 chữ số tính bằng mili giây. Date.now() của JavaScript trả về mili giây; phần lớn backend trả về giây.
UTC nghĩa là gì?

UTC là viết tắt của Coordinated Universal Time (Giờ Phối hợp Quốc tế). Đây là mốc giờ chuẩn toàn cầu và không áp dụng giờ mùa hè. Phần lớn cơ sở dữ liệu, API và log nên lưu thời gian theo UTC.

Vì sao JavaScript dùng mili giây?
Đối tượng Date của JavaScript lưu timestamp dưới dạng số mili giây kể từ Unix epoch, đó là giá trị mà Date.now() và new Date().getTime() trả về. Cách này chính xác hơn giây, nhưng thường gây ra bug lệch 1000 lần khi làm việc với các ngôn ngữ khác.
Làm sao chuyển Unix timestamp sang ngày giờ?
Nhân với 1000 (nếu là giây) rồi truyền vào new Date(...) trong JavaScript, hoặc dùng datetime.fromtimestamp(...) trong Python. Hoặc dán vào công cụ chuyển đổi Unix timestamp để có kết quả chỉ với một cú nhấp.
Unix timestamp có bị tràn số không?
Unix timestamp 32 bit có dấu sẽ tràn vào ngày 2038-01-19, còn gọi là sự cố năm 2038. Các ngôn ngữ và cơ sở dữ liệu hiện đại lưu timestamp dưới dạng số nguyên 64 bit, giúp kéo dài khoảng an toàn thêm hàng trăm tỷ năm.

Tìm hiểu thêm

Công cụ lập trình khác

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu