ToolHub
View All Posts

Unix Timestamp Giải Thích Chi Tiết: Chuyển Đổi Giữa Các Định Dạng

Unix timestamp là một trong những khái niệm cơ bản nhất trong tính toán, nhưng nhiều lập trình viên và chuyên gia dữ liệu vẫn cảm thấy bối rối về nó. Cho dù bạn đang gỡ lỗi phản hồi API, phân tích tệp nhật ký hay xây dựng hệ thống lập lịch, hiểu cách Unix timestamp hoạt động và cách chuyển đổi giữa các định dạng là một kỹ năng thiết yếu.

Unix Timestamp Là Gì?

Unix timestamp, còn được gọi là epoch time hoặc POSIX time, là số giây đã trôi qua kể từ 00:00:00 UTC ngày 1 tháng 1 năm 1970 (không bao gồm giây nhuận). Điểm tham chiếu này được gọi là Unix epoch. Timestamp được lưu trữ dưới dạng một số nguyên duy nhất, giúp dễ dàng so sánh, sắp xếp và tính toán chênh lệch thời gian.

Ví dụ, Unix timestamp 1700000000 tương ứng với 22:13:20 UTC ngày 14 tháng 11 năm 2023. Sự đơn giản của việc biểu diễn thời gian dưới dạng một số duy nhất khiến Unix timestamp trở thành tiêu chuẩn cho biểu diễn thời gian trong hệ điều hành, cơ sở dữ liệu và ngôn ngữ lập trình.

Tại Sao Sử Dụng Unix Timestamp

Các Định Dạng Timestamp Phổ Biến

Các hệ thống khác nhau sử dụng các định dạng timestamp khác nhau. Hiểu những khác biệt này giúp bạn chuyển đổi chính xác giữa chúng.

Định DạngVí DụNgười Dùng
Unix Giây1700000000Linux, API, Cơ Sở Dữ Liệu
Unix Mili Giây1700000000000JavaScript, Java
Unix Micro Giây1700000000000000Python, Go
ISO 86012023-11-14T22:13:20ZREST API, JSON
RFC 2822Tue, 14 Nov 2023 22:13:20 +0000Header Email, HTTP

Chuyển Đổi Unix Timestamp Sang Ngày Có Thể Đọc

Trong JavaScript

JavaScript biểu diễn timestamp bằng mili giây. Để chuyển đổi Unix timestamp tính bằng giây sang đối tượng Date của JavaScript, nhân với 1000 trước. Sau đó sử dụng các phương thức như toLocaleString() hoặc toISOString() để định dạng đầu ra.

Trong Python

Mô-đun datetime của Python cung cấp phương thức fromtimestamp() để chuyển đổi Unix timestamp sang đối tượng datetime. Python cũng hỗ trợ timestamp với độ chính xác micro giây thông qua phương thức datetime.fromtimestamp(ts, tz=timezone.utc).

Trong Dòng Lệnh

Trên Linux và macOS, lệnh date có thể chuyển đổi timestamp. Sử dụng date -d @1700000000 trên Linux hoặc date -r 1700000000 trên macOS để lấy ngày có thể đọc từ Unix timestamp.

Sử Dụng Công Cụ Trực Tuyến

Cách nhanh nhất để chuyển đổi timestamp là sử dụng trình chuyển đổi trực tuyến. Dán timestamp của bạn và công cụ hiển thị ngay ngày và giờ tương ứng ở nhiều định dạng. Hãy thử trình chuyển đổi timestamp miễn phí của chúng tôi để chuyển đổi nhanh chóng.

Chuyển Đổi Ngày Sang Unix Timestamp

Chuyển đổi ngược — chuyển đổi ngày có thể đọc thành Unix timestamp — cũng quan trọng không kém. Điều này thường cần thiết khi gửi ngày đến API, lưu trữ ngày do người dùng chọn hoặc lập lịch sự kiện trong tương lai.

Trong JavaScript, tạo đối tượng Date và gọi getTime() để lấy timestamp mili giây, sau đó chia cho 1000 để có giây. Trong Python, sử dụng datetime.timestamp() để lấy trực tiếp Unix timestamp. Hầu hết các ngôn ngữ lập trình cung cấp các phương thức tích hợp tương tự.

Vấn Đề Năm 2038

Hệ thống lưu trữ Unix timestamp bằng số nguyên có dấu 32 bit sẽ tràn vào lúc 03:14:07 UTC ngày 19 tháng 1 năm 2038. Khi đó, timestamp sẽ đạt 2147483647, giá trị tối đa của số nguyên có dấu 32 bit, sau đó quay vòng thành số âm, khiến ngày hiển thị là năm 1901.

Vấn đề này được gọi là Vấn đề năm 2038 hoặc Y2K38, ảnh hưởng đến các hệ thống cũ và thiết bị nhúng. Giải pháp là sử dụng số nguyên 64 bit để lưu trữ timestamp, mở rộng phạm vi có thể biểu diễn lên khoảng 292 tỷ năm. Hầu hết các hệ điều hành, cơ sở dữ liệu và ngôn ngữ lập trình hiện đại đã chuyển sang timestamp 64 bit.

Mẹo cho lập trình viên: luôn sử dụng số nguyên 64 bit khi lưu trữ timestamp trong cơ sở dữ liệu và API. Nếu bạn sử dụng JavaScript, hãy nhớ rằng Date.getTime() trả về mili giây chứ không phải giây. Chia cho 1000 khi tương tác với hệ thống mong đợi giây.

Xử Lý Múi Giờ

Unix timestamp luôn sử dụng UTC, loại bỏ sự mơ hồ về múi giờ. Tuy nhiên, hiển thị timestamp cho người dùng yêu cầu chuyển đổi sang múi giờ địa phương của họ. Dưới đây là những cân nhắc chính:

Các Bẫy Phổ Biến

Cần chuyển đổi giữa Unix timestamp và ngày có thể đọc? Hãy thử trình chuyển đổi timestamp miễn phí của chúng tôi.

Thử Trình Chuyển Đổi Timestamp

Câu Hỏi Thường Gặp

Unix epoch là gì?

Unix epoch là 00:00:00 UTC ngày 1 tháng 1 năm 1970. Nó phục vụ như điểm tham chiếu cho tất cả các tính toán Unix timestamp. Timestamp biểu diễn số giây đã trôi qua kể từ thời điểm đó.

Unix timestamp có hết không?

Unix timestamp sử dụng số nguyên có dấu 32 bit sẽ tràn vào ngày 19 tháng 1 năm 2038, được gọi là Vấn đề năm 2038. Hệ thống sử dụng số nguyên 64 bit sẽ không gặp vấn đề này trong khoảng 292 tỷ năm. Hầu hết các hệ thống hiện đại đã chuyển sang timestamp 64 bit.

Unix timestamp có bị ảnh hưởng bởi múi giờ không?

Không, Unix timestamp luôn sử dụng UTC, không bị ảnh hưởng bởi múi giờ. Cùng một timestamp đại diện cho cùng một thời điểm trên toàn cầu. Chuyển đổi múi giờ chỉ xảy ra khi hiển thị timestamp dưới dạng ngày có thể đọc.

Sự khác biệt giữa giây và mili giây trong timestamp là gì?

Unix timestamp tiêu chuẩn đo thời gian kể từ epoch bằng giây, trong khi JavaScript và một số API sử dụng mili giây. Timestamp mili giây lớn gấp 1000 lần timestamp giây. Ví dụ, 1700000000 giây bằng 1700000000000 mili giây.

Giây nhuận có ảnh hưởng đến Unix timestamp không?

Về mặt kỹ thuật, Unix timestamp bỏ qua giây nhuận. Mỗi ngày được coi là có chính xác 86400 giây. Điều này có nghĩa là khi giây nhuận được chèn vào, thời gian Unix có thể hơi lệch so với UTC, nhưng trong thực tế điều này hiếm khi gây ra vấn đề.