Epoch Converter: Đổi Unix Timestamp Sang Ngày
Dán bất kỳ epoch, timestamp hay ngày giờ nào để xem bằng chữ, theo múi giờ của bạn và theo UTC, cùng mọi cách đọc khác của con số.
Một con số · mọi epoch
7 cách đọc rơi vào ngày có thậtĐọc là Giây Unix theo độ dài: 9 chữ số. Nếu là Giây GPS, nó sẽ là ngày 6 tháng 12, 2005: cũng là một ngày có thật, nên vẫn chỉ cách một cú nhấp.
- Mili giây
- Micro giây
- Nano giây
- ISO 8601
Đồng hồ của trình duyệt bạn đếm theo mili giây nguyên: các số 0 phía sau chỉ là phần đệm, không phải độ chính xác.
UTC · UTC+00:00 vào ngày này
1793813880- Mili giây
1793813880000- ISO 8601
2026-11-04T17:38:00Z
Bắt đầu và kết thúc ở UTC
| Bắt đầu | Kết thúc | |
|---|---|---|
| Ngày | 1793750400 | 1793836799 |
| Tháng | 1793491200 | 1796083199 |
| Năm | 1767225600 | 1798761599 |
Mọi thứ diễn ra trong tab này: không gì bạn dán bị gửi đi đâu cả.
Cách dùng epoch converter
Dán timestamp bạn có vào ô nhập, dù nó tính bằng đơn vị nào, và ngày sẽ hiện ra theo múi giờ của bạn và theo UTC. Bạn cũng có thể gõ một ngày, header Date của email hoặc chữ “bây giờ” (hoặc now) để lấy epoch time của nó.
Trang đọc một con số theo giây, mili giây, micro giây và nano giây cùng lúc, chọn cách đọc rơi vào một ngày có thật, cho biết lý do, và giữ các cách đọc khác chỉ cách một cú nhấp. Bên dưới kết quả, cùng các chữ số đó được đọc như timestamp của Windows, .NET, Mac, Excel, NTP và GPS, và định dạng nào cũng sao chép được.

Dán bất cứ thứ gìMột con số ở bất kỳ đơn vị nào, một ngày ISO, header Date của email, ngày giờ SQL hoặc chữ “bây giờ” (hoặc “now”). Nhãn ở đầu ô cho biết nó được đọc thế nào.Đếm các chữ sốThước bên dưới con số chia các chữ số thành từng nhóm ba, nên 18 chữ số thành sáu nhóm: manh mối đầu tiên cho biết đó là gì.Câu trả lời trước tiênThứ và ngày viết bằng chữ, rồi đến giờ theo UTC và theo múi giờ của chính bạn, cùng mọi định dạng để sao chép.Cách đọc nào, và vì saoTrang nói rõ bằng lời đã chọn cách đọc nào và vì sao, và nêu tên cách đọc khác cũng rơi vào một ngày có thật.Mọi epoch khácCùng các chữ số đó được đọc theo mọi đơn vị và mọi epoch, mỗi cách là một thanh tính từ điểm bắt đầu của riêng nó. Chọn một hàng để dùng cách đọc đó.Epoch time là gì, và vì sao nó bắt đầu từ năm 1970?
Epoch time, hay thời gian Unix, là số giây tính từ 1970-01-01 00:00:00 UTC, thời điểm mà POSIX gọi là Epoch (Unix epoch). Timestamp 0 chính là thời điểm đó, và 817876800 là 1995-12-02 04:00 UTC.
Không có tài liệu gốc nào ghi lại lý do chọn năm 1970. Sách hướng dẫn Unix đầu tiên, vào tháng 11 năm 1971, đếm từng phần sáu mươi giây kể từ ngày 1 tháng 1 năm 1971 và ghi chú rằng đồng hồ sẽ hết chỗ sau khoảng hai năm rưỡi; đến ấn bản thứ bảy năm 1979, giá trị đếm đã là số giây kể từ ngày 1 tháng 1 năm 1970, một ngày tròn gần thời điểm Unix đang được viết. Bản thân UTC chỉ bắt đầu từ năm 1972, nên các timestamp sớm hơn là UTC theo quy ước.
đầy vào 8 tháng 4, 1973 · 2,27 năm
1901-12-13 → 2038-01-1968 năm về mỗi phía
giá trị âm: trước 1970
UNIX Programmer's Manual, ấn bản thứ nhất, time (II), 3 tháng 11, 1971
Người dùng quan tâm đến niên đại sẽ nhận ra rằng 2**32 phần sáu mươi giây chỉ vào khoảng 2,5 năm.
Mọi epoch trang này đọc, trên cùng một trục
- 1
.NET
0001-01-01· tick 100 nano giây - 2
Windows FILETIME
1601-01-01· tick 100 nano giây - 3
Excel
1899-12-30· ngày - 4NTP
1900-01-01· giây - 5
Mac HFS+
1904-01-01· giây - 6
Excel 1904
1904-01-01· ngày - 7Unix
1970-01-01· giây - 8GPS
1980-01-06· giây
Timestamp của tôi tính bằng giây, mili giây, micro giây hay nano giây?
Hãy đếm chữ số: một timestamp hiện nay có 10 chữ số nếu tính bằng giây, 13 nếu bằng mili giây, 16 nếu bằng micro giây và 19 nếu bằng nano giây. JavaScript và Java dùng mili giây; các công cụ Unix và hầu hết API dùng giây.
Số chữ số là một gợi ý mạnh, không phải bằng chứng. Timestamp NTP, GPS và Mac hiện nay cũng có mười chữ số, còn Windows FILETIME và số tick .NET đều có mười tám chữ số; đó là lý do trang này đọc mọi thang đo cùng lúc và hiện cách đọc đã chọn bên cạnh các cách khác. Một FILETIME còn lớn hơn mức JavaScript giữ chính xác được, nên trang giữ nguyên các chữ số như bạn đã dán.
10 chữ số · 4 thang đo · chỉ nhìn chữ số thì không biết là loại nào
18 chữ số · 2 thang đo · chỉ chữ số đầu tiên phân biệt được chúng
Số giây có 10 chữ số trải từ 2001-09-09T01:46:40Z đến 2286-11-20T17:46:39Z. Đó là một khoảng 285 năm, không phải một đơn vị.
Làm sao đổi Unix timestamp sang ngày theo múi giờ của tôi?
Unix timestamp không có múi giờ: nó chỉ một thời điểm duy nhất ở mọi nơi. Ngày phụ thuộc vào nơi bạn đọc nó, nên trang hiển thị múi giờ của bạn và UTC cạnh nhau, cùng bất kỳ múi giờ nào khác bạn chọn.
Bộ chọn múi giờ dùng cơ sở dữ liệu múi giờ IANA, cũng là cơ sở dữ liệu mà hệ điều hành của bạn dùng, nên các lần đổi giờ mùa hè được áp dụng theo chính ngày đó, không theo hôm nay. Theo chiều ngược lại, một ngày nhập không có độ lệch sẽ được đọc là UTC, và trang đề nghị đọc nó theo múi giờ của bạn.
Một thời điểm1793057400= 2026-10-26T23:30:00Z
- Los Angeles16:30Thứ 2, 26 thg 10UTC−07:00
- New York19:30Thứ 2, 26 thg 10UTC−04:00
- UTC23:30Thứ 2, 26 thg 10UTC+00:00
- Berlin00:30Thứ 3, 27 thg 10UTC+01:00
- Kolkata05:00Thứ 3, 27 thg 10UTC+05:30
- Tokyo08:30Thứ 3, 27 thg 10UTC+09:00
- Lord Howe10:30Thứ 3, 27 thg 10UTC+11:00
Berlin, 29 tháng 3, 202623 giờ · đồng hồ nhảy từ 02:00 lên 03:00
Berlin, 25 tháng 10, 202625 giờ · đồng hồ lùi từ 03:00 về 02:00
Giờ chuẩn Trung Âu · UTC+01:00Giờ mùa hè Trung Âu · UTC+02:00giờ đã xảy ra hai lầngiờ chưa từng xảy ra
Điều gì xảy ra với thời gian Unix vào năm 2038?
Thời gian Unix lưu dưới dạng số nguyên 32 bit có dấu sẽ hết ở 2147483647, tức 2038-01-19 03:14:07 UTC; một giây sau, nó quay vòng về một ngày trong tháng 12 năm 1901. Các hệ thống đếm bằng 64 bit, như POSIX hiện yêu cầu, không bị ảnh hưởng.
Rủi ro vào năm 2026 nằm ở khâu lưu trữ, không phải ở đồng hồ: cột TIMESTAMP của MySQL vẫn kết thúc ở 2038-01-19 03:14:07 UTC, và mọi định dạng tệp hay thiết bị nhúng còn giữ trường 32 bit cũng vậy. NTP có một mốc quay vòng riêng, sớm hơn: giây 32 bit của nó quay vòng vào năm 2036. Trang đánh dấu mọi timestamp gần hoặc vượt mốc 2038.
2.147.483.647số 32 bit có dấu lớn nhất
01111111 11111111 11111111 11111111Thứ 3, 19 thg 1, 203803:14:07 UTC
+ 1 giây
-2.147.483.648cùng 32 bit đó, đọc như số có dấu
10000000 00000000 00000000 00000000Thứ 6, 13 thg 12, 190120:45:52 UTC
Giây cuối cùng, UTC
time_t 32 bit có dấu2038-01-19 03:14:07TIMESTAMP của MySQL2038-01-19 03:14:07hôm nay2038-01-19
time_t 64 bit, loại mà POSIX.1-2024 bắt buộc, vươn tới khoảng 292 tỷ năm về mỗi phía của năm 1970. Nguồn: POSIX.1-2024 A.4.19, MySQL 8.4, RFC 5905 §6, TN1150Unix timestamp có thể là số âm không?
Có: timestamp âm là một ngày trước năm 1970. -1 là 1969-12-31 23:59:59 UTC, và -86400 là 1969-12-31 00:00:00 UTC.
Chính POSIX để giá trị âm ở dạng không xác định, nhưng GNU và hầu hết hệ thống coi chúng là ngày trước 1970 như một phần mở rộng có tài liệu, và JavaScript, Python, PostgreSQL cũng vậy. MySQL là ngoại lệ: cột TIMESTAMP của nó bắt đầu từ 1970, và FROM_UNIXTIME(-1) trả về NULL. Ngày sinh và hồ sơ lịch sử là những timestamp âm bình thường, nên trang đọc chúng là ngày thay vì coi là lỗi.
GiâyLùi xa bao nhiêu (thang log)Ngày, UTC
0Thứ 5, 1 thg 1, 197000:00:00 UTC-1Thứ 4, 31 thg 12, 196923:59:59 UTC-86.400Thứ 4, 31 thg 12, 196900:00:00 UTC-31.536.000Thứ 4, 1 thg 1, 196900:00:00 UTC-1.000.000.000CN, 24 thg 4, 193822:13:20 UTC-2.147.483.648Thứ 6, 13 thg 12, 190120:45:52 UTC- POSIX
Nếu năm <1970 hoặc giá trị là số âm, thì mối quan hệ là không xác định.
GNU date
@-1là 1969-12-31 23:59:59 UTC: giá trị âm, như một phần mở rộng của POSIXJavaScriptmọi ngày trong khoảng chừng 273.790 năm quanh 1970, về cả hai phía
MySQL TIMESTAMPbắt đầu từ 1970-01-01 00:00:01 UTC: không chứa được giá trị âm
Windows, .NET, Mac, Excel, NTP và GPS: các epoch khác
Nhiều hệ thống đếm từ mốc 0 riêng của mình: Windows từ 1601, .NET từ năm 1, Mac và HFS+ từ 1904, Excel từ 1900, NTP từ 1900 và GPS từ ngày 6 tháng 1 năm 1980. Một con số vô nghĩa khi đọc là Unix timestamp thường là một trong số này.
Ví dụ, FILETIME 133756272000000000 đếm các khoảng 100 nano giây kể từ 1601 và là 2024-11-09 12:00:00 UTC. Excel đếm theo ngày và cố ý coi 1900 là năm nhuận, nên các số sê-ri dưới 61 lệch một ngày, và trang sẽ đánh dấu chúng. Thời gian GPS bỏ qua giây nhuận và đã đi nhanh hơn UTC 18 giây kể từ năm 2017.
| Epoch | Đơn vị đếm | Từ | Ngày 26 thg 10, 2026 | Chữ số | Múi giờ | Gặp ở đâu |
|---|---|---|---|---|---|---|
| Giây Unix | giây | 1970-01-01 | 1792972800 | 10 | UTC (POSIX) | date +%s, time.time() của Python |
| mili giây | 1970-01-01 | 1792972800000 | 13 | UTC | Date.now() của JavaScript, Java | |
| nano giây | 1970-01-01 | 1792972800000000000 | 19 | UTC | UnixNano() của Go | |
| tick 100 nano giây | 1601-01-01 | 134374464000000000 | 18 | UTC (giờ địa phương trên FAT) | NTFS, lastLogon của Active Directory, Win32 | |
| tick 100 nano giây | 0001-01-01 | 639285696000000000 | 18 | UTC hoặc giờ địa phương, tùy Kind | DateTime.Ticks của .NET | |
| ngày | 1899-12-30 | 46321 | 5 | không có: giờ đồng hồ | Excel, Google Sheets, LibreOffice | |
| ngày | 1904-01-01 | 44859 | 5 | không có: giờ đồng hồ | Excel cũ cho Mac | |
| giây | 1904-01-01 | 3875817600 | 10 | GMT (HFS cổ điển: giờ địa phương) | Ngày tháng của tệp HFS+ | |
| Giây NTP | giây | 1900-01-01 | 4001961600 | 10 | UTC | Gói tin NTP |
| Giây GPS | giây | 1980-01-06 | 1477008018 | 10 | không có giây nhuận: UTC + 18 giây | Máy thu GPS, tệp RINEX |
Thời gian Unix có tính giây nhuận không?
Không. Thời gian Unix cho mỗi ngày đúng 86.400 giây, nên giây nhuận không có số riêng, và chính POSIX nói vậy: thời gian POSIX dạng tách thành phần không nhất thiết là UTC, dù trông có vẻ như vậy.
Từ năm 1972, 27 giây nhuận đã được thêm vào UTC; thời gian Unix không có số cho giây dư đó, nên một timestamp đại diện cho hai giây. Lần gần nhất là vào 2016-12-31, và năm 2022 Đại hội Cân đo Quốc tế đã quyết định rằng chậm nhất đến năm 2035, giới hạn khiến giây nhuận trở nên cần thiết sẽ được nới rộng, điều mà trên thực tế sẽ chấm dứt chúng. Thời gian GPS, vốn chưa bao giờ có giây nhuận, cho thấy khác biệt: nó đi nhanh hơn 18 giây.
Những giây cuối cùng của ngày 31 tháng 12, 1998
Thời gian Unix cho ra 915148800 hai lần; thời gian GPS, vốn không có giây nhuận, vẫn tiếp tục đếm.
27 giây nhuậnkhông có thêm sau ngày 31 tháng 12, 2016 · chưa có giây nào được công bố trước ngày 28 tháng 6, 2027
trước khi có thời gian GPStừ khi có thời gian GPS: mỗi giây nhuận đẩy nó lên trước thêm một giây
POSIX.1-2024, Rationale A.4.19
Giờ Phối hợp Quốc tế (UTC) có giây nhuận. Tuy nhiên, trong thời gian POSIX (số giây kể từ Epoch), giây nhuận bị bỏ qua (không được áp dụng) để có một cách đơn giản và tương thích khi tính hiệu thời gian. Vì vậy, thời gian POSIX dạng tách thành phần không nhất thiết là UTC, dù trông có vẻ như vậy.
Unix timestamp trong Python, JavaScript, Java, C#, Go, SQL và shell
Ngôn ngữ nào cũng chuyển đổi được theo cả hai chiều chỉ trong một hai dòng. Cái bẫy nằm ở đơn vị (JavaScript và Java đếm mili giây) và múi giờ (cơ sở dữ liệu có thể đọc giá trị theo múi giờ của phiên làm việc).
Mỗi ví dụ bên dưới đổi 817876800 thành một ngày và đổi một ngày ngược lại thành số giây, và ví dụ nào cũng đã được chạy để kiểm tra kết quả. Trên shell, macOS và các hệ BSD dùng date -r 817876800, còn GNU/Linux dùng date -d @817876800: hai cách này không thay thế cho nhau được.
from datetime import datetime, timezone t = datetime.fromtimestamp(817876800, tz=timezone.utc) print(t.isoformat()) # 1995-12-02T04:00:00+00:00 back = datetime(1995, 12, 2, 4, 0, tzinfo=timezone.utc) print(int(back.timestamp())) # 817876800
Đã chạy bằng Python 3.14.4 vào ngày 26 tháng 10, 2026: kết quả in ra đúng như các chú thích ghi.
const t = new Date(817876800 * 1000); // Date counts milliseconds console.log(t.toISOString()); // 1995-12-02T04:00:00.000Z const back = Date.UTC(1995, 11, 2, 4, 0, 0) / 1000; // months count from 0 console.log(back); // 817876800
Đã chạy bằng Node.js 22.23.2 vào ngày 26 tháng 10, 2026: kết quả in ra đúng như các chú thích ghi.
import java.time.Instant;
public class Main {
public static void main(String[] args) {
Instant t = Instant.ofEpochSecond(817876800L);
System.out.println(t); // 1995-12-02T04:00:00Z
long back = Instant.parse("1995-12-02T04:00:00Z").getEpochSecond();
System.out.println(back); // 817876800
}
}Đã chạy bằng OpenJDK 25.0.2 vào ngày 26 tháng 10, 2026: kết quả in ra đúng như các chú thích ghi.
var t = DateTimeOffset.FromUnixTimeSeconds(817876800); Console.WriteLine(t.ToString("o")); // 1995-12-02T04:00:00.0000000+00:00 var back = new DateTimeOffset(1995, 12, 2, 4, 0, 0, TimeSpan.Zero).ToUnixTimeSeconds(); Console.WriteLine(back); // 817876800
Đã chạy bằng .NET 10.0.103 vào ngày 26 tháng 10, 2026: kết quả in ra đúng như các chú thích ghi.
package main import ( "fmt" "time" ) func main() { t := time.Unix(817876800, 0).UTC() fmt.Println(t.Format(time.RFC3339)) // 1995-12-02T04:00:00Z back := time.Date(1995, 12, 2, 4, 0, 0, 0, time.UTC).Unix() fmt.Println(back) // 817876800 }
Đã chạy bằng Go 1.25.5 vào ngày 26 tháng 10, 2026: kết quả in ra đúng như các chú thích ghi.
SET TIME ZONE 'UTC'; SELECT to_timestamp(817876800); -- 1995-12-02 04:00:00+00 SELECT EXTRACT(EPOCH FROM TIMESTAMPTZ '1995-12-02 04:00:00+00')::bigint; -- 817876800
Đã chạy bằng PostgreSQL 16.10 vào ngày 26 tháng 10, 2026: kết quả in ra đúng như các chú thích ghi.
SET time_zone = '+00:00'; SELECT FROM_UNIXTIME(817876800); -- 1995-12-02 04:00:00 SELECT UNIX_TIMESTAMP('1995-12-02 04:00:00'); -- 817876800
Đã chạy bằng MySQL 9.5.0 vào ngày 26 tháng 10, 2026: kết quả in ra đúng như các chú thích ghi.
# macOS and the BSDs: -r takes seconds date -u -r 817876800 '+%F %T' # 1995-12-02 04:00:00 date -u -j -f '%F %T' '1995-12-02 04:00:00' +%s # 817876800 # Linux (GNU coreutils): -d @seconds; GNU's -r reads a file's date date -u -d @817876800 '+%F %T' # 1995-12-02 04:00:00 date -u -d '1995-12-02 04:00:00' +%s # 817876800
Đã chạy bằng lệnh date của macOS 26.6 và của GNU coreutils 9.12 vào ngày 26 tháng 10, 2026: kết quả in ra đúng như các chú thích ghi.
Epoch time: hỏi và đáp
Epoch time là gì?
Làm sao đổi epoch time sang ngày?
new Date(817876800 * 1000) trong JavaScript.Epoch time hiện tại là bao nhiêu?
date +%s in nó ra theo giây.Unix timestamp tính bằng giây hay mili giây?
Vì sao thời gian Unix bắt đầu từ năm 1970?
Thời gian Unix có giống UTC không?
Sự cố năm 2038 là gì?
TIMESTAMP của MySQL vẫn kết thúc ở đúng giây đó.Có đổi được ngày trước năm 1970 không?
TIMESTAMP của MySQL không chứa được chúng, nhưng hầu hết ngôn ngữ lập trình và cơ sở dữ liệu đọc chúng là ngày trước 1970.Làm sao đổi Windows FILETIME sang ngày?
Làm sao đổi số sê-ri ngày của Excel sang timestamp?
Công cụ có xử lý múi giờ và giờ mùa hè không?
Timestamp của tôi có bị gửi đi đâu không?
Còn thiếu điều gì?Đề xuất tính năng hoặc công cụ mới
Công cụ liên quan
Tạo UUID
Tạo UUID v4, v7, v1, v5 và v3 hoặc GUID hàng loạt, theo mọi định dạng, và giải mã phiên bản cùng timestamp của UUID
Giải Mã & Mã Hóa Base64
Giải mã và mã hóa Base64: văn bản (UTF-8, URL-safe), ảnh, PDF và mọi tệp sang Base64 hoặc data URI
Dịch Mã Nhị Phân
Dịch văn bản sang mã nhị phân và nhị phân sang văn bản: tự nhận diện, hex, thập phân và bát phân
Máy Tính Subnet
Địa chỉ mạng, broadcast, số host dùng được và mask cho mọi khối IPv4 hoặc IPv6, kèm VLSM, chia subnet và subnet trên cloud