Chuyển đổi dấu thời gian
Chuyển đổi dấu thời gian Unix sang ngày đọc được và ngược lại
Dấu thời gian Unix hiện tại
1774458477
Wed, 25 Mar 2026 17:07:57 GMT
Dấu thời gian Unix là gì?
Dấu thời gian Unix (còn gọi là epoch time hoặc POSIX time) là số giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970, 00:00:00 UTC. Ngày này được gọi là Unix epoch. Mỗi giây trôi qua, bộ đếm tăng thêm một, cho phép mỗi thời điểm được biểu diễn bằng một số nguyên duy nhất. Công cụ chuyển đổi dấu thời gian Unix dịch qua lại giữa số nguyên này và các định dạng ngày đọc được như ISO 8601, RFC 2822 hoặc chuỗi theo ngôn ngữ địa phương.
Dấu thời gian Unix là cách tiêu chuẩn để biểu diễn thời gian trong hệ thống máy tính. Cơ sở dữ liệu lưu các cột created_at và updated_at dưới dạng số nguyên hoặc dấu thời gian mili giây. Phản hồi API chứa dấu thời gian trong các tiêu đề cache (Expires, Last-Modified), các claim của JWT (iat, exp, nbf) và nhật ký sự kiện. Tệp nhật ký từ nginx, syslog và các framework ứng dụng đều dùng epoch time. Định dạng này không gây nhầm lẫn vì luôn biểu diễn UTC, không có múi giờ hay giờ tiết kiệm ánh sáng ban ngày.
Chuyển đổi giữa dấu thời gian và ngày tháng bằng tay rất dễ mắc lỗi. Một giá trị như 1711324800 không cho thấy trực quan ngày tháng nào nó đại diện. Công cụ này chuyển đổi dấu thời gian Unix sang ngày đọc được và ngược lại. Dù bạn đang đọc một claim exp trong JWT, gỡ lỗi truy vấn cơ sở dữ liệu, hay kiểm tra dấu thời gian trong nhật ký, công cụ tự động xử lý cả giá trị 10 chữ số (giây) lẫn 13 chữ số (mili giây).
Tại sao dùng công cụ chuyển đổi dấu thời gian này?
Đọc dấu thời gian Unix thô từ nhật ký, cơ sở dữ liệu hay phản hồi API đòi hỏi phải nhớ phép tính epoch hoặc viết đoạn code tạm thời. Công cụ này thực hiện ngay trong trình duyệt mà không cần cài đặt. Dù bạn cần giải mã thời hạn JWT, kiểm tra một dòng nhật ký hay đặt TTL cho cơ sở dữ liệu, kết quả chỉ cần một cú nhấp. Công cụ tự phát hiện giá trị là dấu thời gian 10 chữ số (giây) hay 13 chữ số (mili giây), nên bạn không cần chia thủ công cho 1000. Toàn bộ quá trình xử lý chạy cục bộ trong trình duyệt. Dữ liệu không rời khỏi máy của bạn, đảm bảo dấu thời gian từ hệ thống nội bộ và nhật ký nhạy cảm được bảo mật.
Các trường hợp sử dụng công cụ chuyển đổi dấu thời gian
Bảng tham chiếu dấu thời gian Unix
Bảng dưới đây liệt kê các dấu thời gian Unix nổi tiếng cùng ngày tháng tương ứng. Các giá trị này hữu ích để kiểm tra nhanh, kiểm thử và hiểu phạm vi của dấu thời gian 32-bit và 64-bit.
| Dấu thời gian | Ngày (UTC) | Ghi chú |
|---|---|---|
| 0 | Jan 1, 1970 00:00:00 UTC | Unix epoch start |
| 86400 | Jan 2, 1970 00:00:00 UTC | Exactly 1 day |
| 946684800 | Jan 1, 2000 00:00:00 UTC | Y2K |
| 1000000000 | Sep 9, 2001 01:46:40 UTC | 10-digit milestone |
| 1234567890 | Feb 13, 2009 23:31:30 UTC | Ascending digits |
| 1700000000 | Nov 14, 2023 22:13:20 UTC | Recent 10-digit |
| 2000000000 | May 18, 2033 03:33:20 UTC | Next 10-digit milestone |
| 2147483647 | Jan 19, 2038 03:14:07 UTC | Y2038 (signed 32-bit max) |
| 4102444800 | Jan 1, 2100 00:00:00 UTC | Next century |
So sánh định dạng ngày giờ
Các hệ thống và tiêu chuẩn khác nhau biểu diễn cùng một thời điểm bằng các định dạng chuỗi khác nhau. Bảng so sánh các định dạng phổ biến nhất mà bạn sẽ gặp trong API, nhật ký và cơ sở dữ liệu.
| Định dạng | Ví dụ | Ghi chú |
|---|---|---|
| Unix (seconds) | 1711324800 | Integer, no timezone info |
| Unix (milliseconds) | 1711324800000 | Used by JavaScript Date.now() |
| ISO 8601 | 2024-03-25T00:00:00Z | Machine-readable, includes timezone |
| RFC 2822 | Mon, 25 Mar 2024 00:00:00 +0000 | Email and HTTP headers |
| UTC string | Mon, 25 Mar 2024 00:00:00 GMT | Date.prototype.toUTCString() |
| Human readable | March 25, 2024, 12:00:00 AM | Locale-dependent, display only |
Ví dụ mã nguồn
Chuyển đổi giữa dấu thời gian Unix và ngày tháng trong ngôn ngữ lập trình bạn đang dùng. Mỗi ví dụ minh họa cả hai chiều: từ dấu thời gian sang ngày và từ ngày sang dấu thời gian.
// Current Unix timestamp in seconds
Math.floor(Date.now() / 1000) // → 1711324800
// Unix timestamp to Date object
const date = new Date(1711324800 * 1000)
date.toISOString() // → "2024-03-25T00:00:00.000Z"
date.toUTCString() // → "Mon, 25 Mar 2024 00:00:00 GMT"
// Date string to Unix timestamp
Math.floor(new Date('2024-03-25T00:00:00Z').getTime() / 1000)
// → 1711324800
// Millisecond timestamps (common in JS APIs)
Date.now() // → 1711324800000 (ms)
Date.parse('2024-03-25') // → 1711324800000 (ms)import time
from datetime import datetime, timezone
# Current Unix timestamp
int(time.time()) # → 1711324800
# Unix timestamp to datetime
dt = datetime.fromtimestamp(1711324800, tz=timezone.utc)
dt.isoformat() # → '2024-03-25T00:00:00+00:00'
dt.strftime('%Y-%m-%d %H:%M:%S %Z') # → '2024-03-25 00:00:00 UTC'
# Datetime string to Unix timestamp
dt = datetime.fromisoformat('2024-03-25T00:00:00+00:00')
int(dt.timestamp()) # → 1711324800
# Parse RFC 2822 dates (from email headers)
from email.utils import parsedate_to_datetime
parsedate_to_datetime('Mon, 25 Mar 2024 00:00:00 +0000').timestamp()
# → 1711324800.0package main
import (
"fmt"
"time"
)
func main() {
// Current Unix timestamp
now := time.Now().Unix() // → 1711324800
// Unix timestamp to time.Time
t := time.Unix(1711324800, 0).UTC()
fmt.Println(t.Format(time.RFC3339))
// → 2024-03-25T00:00:00Z
// Parse a date string to Unix timestamp
parsed, _ := time.Parse(time.RFC3339, "2024-03-25T00:00:00Z")
fmt.Println(parsed.Unix())
// → 1711324800
// Millisecond timestamp
ms := time.Now().UnixMilli() // → 1711324800000
fmt.Println(now, ms)
}# Current Unix timestamp date +%s # → 1711324800 # Convert timestamp to human-readable date (GNU date) date -d @1711324800 # → Mon Mar 25 00:00:00 UTC 2024 # Convert timestamp to ISO 8601 date -d @1711324800 --iso-8601=seconds # → 2024-03-25T00:00:00+00:00 # macOS (BSD date) — slightly different flags date -r 1711324800 # → Mon Mar 25 00:00:00 UTC 2024 # Date string to timestamp (GNU date) date -d "2024-03-25 00:00:00 UTC" +%s # → 1711324800