Unix Timestamp Converter

Chuyển đổi giữa Unix timestamps và ngày giờ dễ đọc ngay lập tức

Tất cả phép tính được thực hiện cục bộ trên trình duyệt của bạn. Không có dữ liệu nào được gửi tới máy chủ của chúng tôi hoặc lưu trữ ở bất kỳ đâu.

Unix Timestamp là gì?

Unix timestamp (còn được gọi là Epoch time hoặc POSIX time) là biểu diễn số học của thời gian đếm số giây (hoặc mili giây) đã trôi qua kể từ ngày 1 tháng 1 năm 1970, 00:00:00 UTC. Thời điểm này được gọi là "Unix Epoch" và là điểm không cho tất cả phép tính Unix timestamp. Hệ thống này cung cấp cách chuẩn hóa, không phụ thuộc múi giờ để biểu diễn ngày và giờ trong các hệ thống máy tính trên toàn thế giới.

Unix timestamps là nền tảng của điện toán hiện đại và được sử dụng rộng rãi trong lập trình, cơ sở dữ liệu, API và các hệ thống cần theo dõi thời gian nhất quán giữa các múi giờ và nền tảng khác nhau. Định dạng này đơn giản, gọn nhẹ và loại bỏ sự phức tạp khi xử lý múi giờ, giờ tiết kiệm ánh sáng ban ngày và sự không nhất quán định dạng ngày giờ.

Các tính năng chính của Unix Timestamps

  • Tiêu chuẩn toàn cầu: Cùng một giá trị timestamp biểu thị cùng một khoảnh khắc trên toàn cầu, không phụ thuộc múi giờ
  • Định dạng đơn giản: Chỉ một số nguyên duy nhất biểu thị thời gian bằng giây hoặc mili giây
  • Tính toán dễ dàng: Hiệu thời gian là các phép toán số học đơn giản
  • Lưu trữ gọn nhẹ: Chỉ cần 32 hoặc 64 bit để lưu trữ
  • Thân thiện với lập trình: Hỗ trợ nguyên bản trong tất cả ngôn ngữ lập trình chính
  • Hiệu quả cho cơ sở dữ liệu: Lý tưởng để sắp xếp và lập chỉ mục các bản ghi theo thời gian
  • Không phụ thuộc múi giờ: Loại bỏ nhầm lẫn do DST và sự khác biệt vùng

Hiểu các định dạng Timestamp

Unix timestamps tồn tại ở hai định dạng chính, mỗi loại phù hợp cho các yêu cầu độ chính xác khác nhau:

1. Giây (10 chữ số)

Định dạng Unix timestamp truyền thống đếm số giây kể từ năm 1970. Ví dụ: 1698768000

Biểu diễn: October 31, 2023, 12:00:00 UTC

2. Mili giây (13 chữ số)

Định dạng độ chính xác cao hơn đếm mili giây kể từ 1970. Ví dụ: 1698768000000

Được sử dụng bởi JavaScript, Node.js và các hệ thống cần độ chính xác mili giây

So sánh định dạng

Event Định dạng Giây Định dạng Mili giây
Unix Epoch (Bắt đầu) 0 0
Y2K (2000-01-01) 946684800 946684800000
Thời gian ví dụ 1698768000 1698768000000
Giới hạn Vấn đề Y2038 2147483647 2147483647000

💡 Tự động phát hiện: Bộ chuyển đổi của chúng tôi tự động xác định định dạng dựa trên số chữ số: 10 digits = seconds, 13 digits = milliseconds. The relationship is simple: milliseconds = seconds × 1000.

Cách chuyển đổi Unix Timestamps

Chuyển đổi giữa Unix timestamps và ngày giờ dễ hiểu là đơn giản với công cụ phù hợp. Bộ chuyển đổi của chúng tôi xử lý cả hai hướng chuyển đổi và nhiều định dạng đầu ra tự động.

Unix Timestamp → Ngày giờ dễ đọc

Đầu vào: 1698768000

ISO 8601: 2023-10-31T12:00:00.000Z

UTC: Tue, 31 Oct 2023 12:00:00 GMT

Thời gian địa phương: Thay đổi tùy theo múi giờ của bạn

Tương đối: "X ngày trước" hoặc "trong X ngày"

Ngày giờ dễ đọc → Unix Timestamp

Đầu vào: October 31, 2023, 12:00:00 PM

Giây: 1698768000

Mili giây: 1698768000000

Cài đặt nhanh

Các timestamp phổ biến để kiểm thử và tham chiếu:

  • Bây giờ: Timestamp hiện tại (cập nhật theo thời gian thực)
  • Unix Epoch: 0 (January 1, 1970, 00:00:00 UTC)
  • Y2K: 946684800 (January 1, 2000, 00:00:00 UTC)

Các trường hợp sử dụng phổ biến cho Unix Timestamps

Unix timestamps có mặt khắp nơi trong phát triển phần mềm hiện đại và quản trị hệ thống:

  • Bản ghi cơ sở dữ liệu: Lưu trữ thời gian tạo/sửa đổi cho bản ghi một cách hiệu quả
  • Phản hồi API: Trao đổi dữ liệu thời gian giữa các hệ thống mà không gặp vấn đề múi giờ
  • Tệp nhật ký: Đánh dấu thời gian sự kiện trong server logs, application logs và audit trails
  • Quản lý phiên: Theo dõi hết hạn phiên người dùng và token xác thực
  • Tác vụ theo lịch: Xác định khi nào cron jobs và các tác vụ tự động nên thực thi
  • Quản lý phiên bản: Ghi lại timestamp commit trong Git và các VCS khác
  • Hệ thống tập tin: Theo dõi thời gian tạo, sửa đổi và truy cập tệp
  • Hết hạn cache: Đặt TTL (time-to-live) cho dữ liệu cache
  • Phân tích dữ liệu: Xử lý dữ liệu chuỗi thời gian và phân tích theo thời gian
  • JavaScript/Node.js: Date.now() trả về Unix timestamp mili giây

Hiểu Vấn đề Y2038

⚠️ Lưu ý quan trọng: Vấn đề Y2038 (còn gọi là Unix Millennium Bug) ảnh hưởng các hệ thống 32-bit lưu Unix timestamps dưới dạng số nguyên dấu. Vào ngày 19 tháng 1 năm 2038, lúc 03:14:07 UTC, các timestamp 32-bit sẽ tràn và trở thành giá trị âm, gây ra khả năng lỗi hệ thống.

Giá trị tối đa cho một số nguyên có dấu 32-bit là 2147483647, đại diện cho khoảnh khắc cuối cùng trước khi tràn. Các hệ thống 64-bit hiện đại không bị ảnh hưởng bởi giới hạn này và có thể biểu diễn các ngày xa trong tương lai (cho đến năm 292 tỷ).

Giải pháp: Hầu hết hệ thống hiện đại đã chuyển sang timestamp 64-bit, nhưng các hệ thống cũ và thiết bị nhúng có thể vẫn dễ bị tổn thương. Luôn sử dụng timestamp 64-bit cho các dự án mới để đảm bảo tuổi thọ.

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

Unix Epoch là gì?

Unix Epoch là điểm bắt đầu cho các phép tính Unix timestamp: ngày 1 tháng 1 năm 1970, lúc 00:00:00 UTC. Ngày này được chọn khi hệ điều hành Unix được phát triển và đã trở thành tiêu chuẩn toàn cầu cho biểu diễn timestamp trong máy tính. Giá trị timestamp 0 biểu thị chính xác khoảnh khắc này.

Làm thế nào để chuyển Unix timestamp sang ngày trong JavaScript?

Trong JavaScript, sử dụng new Date(timestamp * 1000) cho giây hoặc new Date(timestamp) cho mili giây. Ví dụ: new Date(1698768000 * 1000) tạo một đối tượng Date. Date.now() của JavaScript trả về timestamp hiện tại bằng mili giây.

Sự khác biệt giữa định dạng giây và mili giây là gì?

Seconds format (10 digits) is the traditional Unix timestamp used by most Unix/Linux systems and languages like Python and PHP. Milliseconds format (13 digits) provides higher precision and is used by JavaScript, Node.js, and Java. To convert: milliseconds = seconds × 1000.

Liệu Unix timestamps có thể biểu diễn các ngày trước năm 1970 không?

Có! Unix timestamps âm biểu thị các ngày trước Unix Epoch (January 1, 1970). Ví dụ, -86400 biểu thị December 31, 1969, 00:00:00 UTC. Tuy nhiên, một số hệ thống và ngôn ngữ có giới hạn với timestamps âm, vì vậy luôn kiểm thử triển khai cụ thể của bạn.

Vấn đề Y2038 là gì và tôi có nên lo?

Vấn đề Y2038 ảnh hưởng các hệ thống 32-bit nơi timestamps sẽ tràn vào ngày 19 tháng 1 năm 2038, lúc 03:14:07 UTC. Các hệ thống 64-bit hiện đại không bị ảnh hưởng và có thể biểu diễn các ngày đến năm 292 tỷ. Nếu bạn phát triển phần mềm mới, luôn sử dụng timestamp 64-bit. Các hệ thống cũ có thể cần cập nhật trước 2038.

Độ chính xác của Unix timestamps như thế nào?

Unix timestamps ở định dạng giây có độ chính xác đến 1 giây. Định dạng mili giây cung cấp độ chính xác đến 0,001 giây. Để độ chính xác cao hơn, một số hệ thống sử dụng micro giây (16 chữ số) hoặc nano giây (19 chữ số), mặc dù ít phổ biến hơn. Độ chính xác phụ thuộc vào việc đồng bộ hóa đồng hồ hệ thống của bạn.

Unix timestamp có tính đến giây nhuận không?

Không, Unix timestamps không tính đến giây nhuận. Chúng giả sử mỗi ngày có đúng 86.400 giây, điều này đơn giản hóa phép tính nhưng có nghĩa là Unix time không hoàn toàn đồng bộ với thời gian nguyên tử (TAI). Đối với hầu hết ứng dụng, sự khác biệt này không đáng kể và hệ thống đơn giản hóa được ưu tiên.

Tôi có thể sử dụng Unix timestamps cho mọi nhu cầu ngày/giờ không?

Unix timestamps rất tốt để lưu trữ và truyền dữ liệu thời gian, nhưng để hiển thị cho người dùng, bạn nên chuyển chúng sang định dạng thời gian địa phương. Chúng lý tưởng cho các phép tính, sắp xếp và lưu trữ dữ liệu, nhưng các định dạng dễ đọc như ISO 8601 phù hợp hơn cho giao diện người dùng và nhật ký.