🕐
← Quay lại hướng dẫn

Cách chuyển đổi Unix Timestamp sang ngày giờ dễ đọc

· Thẻ: unix-timestamp, conversion, date-conversion, timezone, epoch-converter

Tại sao cần chuyển đổi Unix Timestamp?

Unix timestamp rất lý tưởng cho máy móc — một số nguyên duy nhất gọn nhẹ, rõ ràng và dễ sắp xếp. Nhưng đối với con người, 1785292800 không có ý nghĩa gì cho đến khi nó được chuyển thành ngày và giờ theo lịch. Cho dù bạn đang gỡ lỗi tệp nhật ký, phân tích bản ghi cơ sở dữ liệu hay đọc phản hồi API, biết cách chuyển đổi timestamp nhanh chóng là một kỹ năng thiết yếu.

Phương pháp 1: Sử dụng Công cụ chuyển đổi Unix Timestamp trực tuyến của chúng tôi

Phương pháp nhanh nhất và đáng tin cậy nhất là sử dụng công cụ chuyển đổi chuyên dụng.

Unix Timestamp Converter của chúng tôi chấp nhận timestamp ở cả giây và mili giây, tự động phát hiện độ phân giải và hiển thị kết quả trên nhiều múi giờ cùng lúc. Bạn cũng có thể làm ngược lại — nhập ngày giờ dễ đọc và nhận Unix timestamp tương ứng.

Cách tiếp cận này lý tưởng khi bạn cần chuyển đổi nhanh một lần mà không cần dùng đến dòng lệnh.

Phương pháp 2: Sử dụng Dòng lệnh Linux (lệnh date)

Nếu bạn có quyền truy cập vào terminal Linux hoặc macOS, lệnh date là người bạn tốt nhất của bạn.

Chuyển đổi Timestamp sang Ngày giờ dễ đọc

# Trên GNU Linux (hầu hết các bản phân phối)
date -d @1785292800

# Chỉ định định dạng tùy chỉnh
date -d @1785292800 +"%Y-%m-%d %H:%M:%S"
# Kết quả: 2026-07-19 00:00:00

# Với múi giờ
TZ="America/New_York" date -d @1785292800
# Kết quả: Sun Jul 19 00:00:00 EDT 2026

Trên macOS (BSD date), cú pháp hơi khác một chút:

# Trên macOS
date -r 1785292800

# Với định dạng tùy chỉnh
date -r 1785292800 +"%Y-%m-%d %H:%M:%S"

Chuyển đổi Ngày giờ sang Unix Timestamp

# Trên GNU Linux
date -d "2026-07-19 00:00:00" +%s

# Trên macOS
date -j -f "%Y-%m-%d %H:%M:%S" "2026-07-19 00:00:00" +%s

Phương pháp 3: Tính toán thủ công

Mặc dù bạn hiếm khi cần tự tính toán bằng tay, nhưng hiểu được phép toán sẽ giúp làm sáng tỏ cách hệ thống hoạt động.

Công thức

giây = (năm - 1970) × 31536000 + (độ lệch tháng) × 86400 + ngày × 86400 + giờ × 3600 + phút × 60 + giây

Phần phức tạp là tính đến năm nhuận. Một năm là năm nhuận nếu nó chia hết cho 4, ngoại trừ các năm thế kỷ không chia hết cho 400.

Ước lượng nhanh trong đầu

  • 86.400 giây = 1 ngày
  • 604.800 giây = 1 tuần
  • Khoảng 31.536.000 giây = 1 năm thường
  • Khoảng 31.622.400 giây = 1 năm nhuận

Để ước tính sơ bộ, bạn có thể tính timestamp / 86400 để có số ngày kể từ epoch, sau đó cộng số ngày đó vào ngày 1 tháng 1 năm 1970.

Phương pháp 4: Sử dụng Ngôn ngữ lập trình

Mọi ngôn ngữ lập trình chính đều có các hàm tích hợp sẵn để chuyển đổi timestamp. Dưới đây là những hàm phổ biến nhất:

JavaScript (Browser hoặc Node.js)

// Timestamp sang ngày giờ (JavaScript sử dụng mili giây)
const timestamp = 1785292800;
const date = new Date(timestamp * 1000);
console.log(date.toISOString());
// Kết quả: 2026-07-19T00:00:00.000Z

// Ngày giờ sang timestamp
const ts = Math.floor(new Date("2026-07-19").getTime() / 1000);
console.log(ts);
// Kết quả: 1785292800

Python

from datetime import datetime

# Timestamp sang ngày giờ
dt = datetime.utcfromtimestamp(1785292800)
print(dt.isoformat())
# Kết quả: 2026-07-19T00:00:00

# Có nhận biết múi giờ (Python 3.9+)
from zoneinfo import ZoneInfo
dt_tz = datetime.fromtimestamp(1785292800, tz=ZoneInfo("America/New_York"))
print(dt_tz.isoformat())
# Kết quả: 2026-07-19T00:00:00-04:00

# Ngày giờ sang timestamp
import time
ts = time.mktime(datetime(2026, 7, 19).timetuple())
print(ts)

PHP

<?php
// Timestamp sang ngày giờ
echo date("Y-m-d H:i:s", 1785292800);
// Kết quả: 2026-07-19 00:00:00

// Ngày giờ sang timestamp
echo strtotime("2026-07-19 00:00:00");
// Kết quả: 1785292800

Phương pháp 5: Sử dụng Phần mềm bảng tính

Google Sheets

Sử dụng công thức =DATE(1970,1,1) + A1 / 86400 trong đó A1 chứa timestamp. Định dạng ô kết quả thành kiểu ngày.

Microsoft Excel

=DATE(1970,1,1) + A1 / 86400

Trên Windows Excel, bạn có thể cần:

=(A1 / 86400) + DATE(1970,1,1)

Các trường hợp đặc biệt cần lưu ý

Giây so với Mili giây

Đây là lỗi phổ biến nhất. Nếu bạn truyền giá trị mili giây (ví dụ: 1785292800000) vào một hàm yêu cầu giây, bạn sẽ nhận được ngày tháng cách xa khoảng 56.000 năm trong tương lai.

Cách phát hiện:

  • Nếu số có 10 chữ số, đó có khả năng là giây
  • Nếu số có 13 chữ số, đó có khả năng là mili giây
  • Một số hệ thống cũng sử dụng micro giây (16 chữ số) hoặc nano giây (19 chữ số)

Timestamp âm (Ngày trước năm 1970)

Unix timestamp có thể biểu thị ngày trước epoch bằng số âm:

date -d @-126230400
# Kết quả: Tue Dec 31 00:00:00 -1969

Không phải tất cả các công cụ chuyển đổi đều xử lý đúng timestamp âm. Công cụ chuyển đổi trực tuyến của chúng tôi thì có.

Giây nhuận

Unix time cố ý bỏ qua giây nhuận. Unix timestamp sẽ không bao giờ hiển thị :59:60 ngay cả trong quá trình chèn giây nhuận. Điều này có nghĩa là timestamp lệch khỏi thời gian nguyên tử một lượng nhỏ (hiện tại là 27 giây) nhưng đang tăng dần.

Tổng kết

| Phương pháp | Phù hợp nhất cho | |-------------|------------------| | Công cụ chuyển đổi trực tuyến (/linux-timestamp) | Chuyển đổi nhanh, một lần | | Lệnh date | Người dùng terminal và script | | Tính toán thủ công | Hiểu cách hệ thống hoạt động | | Ngôn ngữ lập trình | Tự động hóa và ứng dụng | | Bảng tính | Phân tích dữ liệu |

Sử dụng Unix Timestamp Converter của chúng tôi để thực hiện chuyển đổi tức thì, chính xác với tự động phát hiện múi giờ.