4 điểm bởi GN⁺ 2023-11-12 | 1 bình luận | Chia sẻ qua WhatsApp
  • Việc Unix timestamp bước vào mốc 1,7 tỷ có nghĩa là số giây tích lũy kể từ ngày 1 tháng 1 năm 1970 theo UTC đã đạt đến mức đó, với giá trị ví dụ được hiển thị là 1782553539
  • Công cụ chuyển đổi có thể biến timestamp sang GMT, múi giờ của người dùng và thời gian tương đối, đồng thời hỗ trợ các đơn vị giây, mili giây, micro giây và nano giây
  • Cùng một thời điểm được hiển thị song song dưới dạng ISO 8601 và nhiều định dạng RFC, giúp dễ kiểm tra sự khác biệt trong cách biểu diễn ngày giờ giữa các hệ thống
  • Vì Unix timestamp chỉ cùng một thời điểm bất kể vị trí, nó hữu ích cho việc theo dõi và sắp xếp thông tin ngày giờ trong các ứng dụng phân tán
  • Vào ngày 19 tháng 1 năm 2038, tràn số 32-bit sẽ trở thành vấn đề, vì vậy các ứng dụng cần áp dụng quy ước timestamp mới hoặc chuyển sang hệ thống 64-bit

Mốc chuẩn và cách chuyển đổi của Unix timestamp

  • Unix timestamp là cách biểu diễn thời gian dưới dạng giá trị tích lũy theo giây
    • Mốc chuẩn là Unix Epoch tại ngày 1 tháng 1 năm 1970 theo UTC
    • Số giây trôi qua giữa một ngày cụ thể và Unix Epoch sẽ trở thành giá trị timestamp
    • Giá trị này chỉ cùng một thời điểm dù người dùng đang ở bất kỳ đâu trên Trái Đất
  • Công cụ chuyển đổi trên trang hỗ trợ cả nhập timestamp lẫn nhập ngày/giờ
    • Timestamp có thể được nhập theo đơn vị giây, mili giây, micro giây và nano giây
    • Ngày/giờ có thể nhập năm, tháng, ngày, giờ theo định dạng 24 giờ, phút và giây để chuyển thành Unix timestamp
    • Kết quả có thể xem dưới dạng GMT, múi giờ của người dùng và thời gian tương đối

Các định dạng thời gian chuẩn được hiển thị kèm theo

  • Ví dụ epoch hiện tại được cung cấp song song ở nhiều định dạng thời gian chuẩn

Quy đổi đơn vị thời gian và vấn đề năm 2038

  • Trang này hiển thị cách quy đổi các đơn vị thời gian dễ đọc của con người sang số giây của Unix timestamp
    • 1 giờ: 3600 giây
    • 1 ngày: 86400 giây
    • 1 tuần: 604800 giây
    • 1 tháng, tính theo 30,44 ngày: 2629743 giây
    • 1 năm, tính theo 365,24 ngày: 31556926 giây
  • Vào ngày 19 tháng 1 năm 2038, Unix timestamp sẽ ngừng hoạt động do tràn số 32-bit
    • Trước thời điểm đó, hàng triệu ứng dụng sẽ phải áp dụng quy ước timestamp mới
    • Hoặc chuyển sang hệ thống 64-bit để kéo dài thêm thời gian có thể sử dụng timestamp

1 bình luận

 
GN⁺ 2023-11-12
Các ý kiến trên Hacker News
  • 100 triệu giây trôi qua nhanh quá
    Nhân tiện, trang nhất của New York Times tại thời điểm Unix timestamp 1600000034 là ở đây:
    https://web.archive.org/web/20200913122714/https://www.nytim...
    Còn các thời điểm 1500000301, 1400000634, 1300007806 lần lượt ở đây:
    https://web.archive.org/web/20170714024501/http://www.nytime...
    https://web.archive.org/web/20140513170354/http://www.nytime...
    https://web.archive.org/web/20110313091646/http://www.nytime...

    • 3,17 năm
  • Unix timestamp 1 600 000 000 cũng chưa phải lâu lắm, đó là 2020-09-13 12:26:40 UTC
    Thảo luận trên HN lúc đó ở đây: https://news.ycombinator.com/item?id=24452885
    Bài blog tôi viết để kỷ niệm sự kiện đó ở đây: https://susam.net/maze/unix-timestamp-1600000000.html
    Vì 100 000 000 giây xấp xỉ 3 năm 2 tháng, nên ta sẽ thấy những sự kiện kiểu này vài năm một lần
    Theo tôi, sự kiện hoành tráng nhất vẫn còn cách 9 năm rưỡi nữa: Unix timestamp 2 000 000 000: 2033-05-18 03:33:20 UTC. Chuyện như vậy chỉ xảy ra khoảng 33 năm 8 tháng một lần
    Trong Python, 1700000000 hiện ra như sau:
    $ python3 -q

    from datetime import datetime
    datetime.utcfromtimestamp(1_700_000_000)
    datetime.datetime(2023, 11, 14, 22, 13, 20)

    GNU date (Linux):
    $ date -ud @1700000000
    Tue Nov 14 22:13:20 UTC 2023
    BSD date (macOS, FreeBSD, OpenBSD, v.v.):
    $ date -ur 1700000000
    Tue 14 Nov 2023 22:13:20 UTC

    • 33 năm cơ à! Cuối những năm 90, tôi dành thời gian chơi MUD, và chẳng hiểu sao có rất nhiều file lưu dùng epoch timestamp làm tên file
      Khi được phụ trách một phần codebase, tôi đã phải xử lý rất nhiều file đó, và tất cả đều là các số trong khoảng 800–900 triệu
      Đến một lúc, chỉ cần nhìn thấy một con số trong khoảng đó là tôi có thể đoán ngay nó rơi vào khoảng năm nào, tháng nào, sai số chỉ vài tuần
      Môi trường kỳ lạ tạo ra những siêu năng lực kỳ lạ
      [0] https://en.wikipedia.org/wiki/Multi-user_dungeon
    • Sự kiện còn hoành tráng hơn là khi đạt tới con số tròn trịa 2,147,483,648 vào tháng 1 năm 2038
    • Tôi thấy 2222222222 còn đặc biệt hơn: Sat Jun 02 2040 03:57:02 GMT+0000
      Nếu may mắn, biết đâu ta còn có thể tận mắt thấy 3333333333. Hẳn sẽ là một ngày đáng nhớ
  • Đây là thời điểm rất hợp để bật https://datetime.store/ và canh chiếc áo hoàn hảo

    • Trang web đó chắc sẽ sập đúng vào thứ Ba…
      “Sếp! Chúng ta đang bị DDoS!”
      “Không đâu con, chỉ là thứ Ba thôi”
    • Có thể dùng thứ kiểu đồng hồ tử thần tính xem về mặt thống kê mình sẽ chết khi nào mà
      Không biết có tìm được chiếc áo in đúng thời điểm đó không
    • Làm tôi nhớ đến ý tưởng cốc cà phê 1BTC từng nghĩ ra trước đây. Đó là thời kỳ đầu khi Bitcoin lần đầu tăng lên 20.000 đô la
  • Tôi đã thức khuya để xem khoảnh khắc chuyển từ 999,999,999 sang 1 tỷ, và nghĩ rằng “mình sẽ nhớ tuần này suốt đời”
    Tôi không ngờ rằng 60 giờ sau, cả thế giới sẽ nhớ tuần đó

    • Timestamp 1000000000 (Sat 2001-09-08 18:46:40 PDT) đã gây lỗi trong hệ thống báo lỗi Remedy mà chúng tôi dùng lúc đó
      Hệ thống lưu số giây kể từ epoch dưới dạng chuỗi, nhưng giả định rằng nó nằm trong 9 chữ số
      Khi tới 1000000000, nó bắt đầu cắt bỏ chữ số cuối, vì thế quay về Sat 1973-03-03 01:46:40 PST và tiến lên với tốc độ 10% so với thời gian thực. Lỗi được sửa khá nhanh
    • Tôi không nhớ là nó gần như vậy, nhưng thời đó tôi đọc Slashdot gần như ám ảnh, và nó cũng hữu ích vào dịp 11/9
      Chắc chắn sự kiện epoch đó cũng đã được nhắc đến
  • Năm 2009, tôi đã đến một buổi gặp mặt 1234567890 tổ chức tại sảnh một khách sạn ở Boston

    • Khi đó tôi đang làm ca đêm trên sàn giao dịch của một ngân hàng lớn
      Trưởng nhóm hỗ trợ kỹ thuật phái sinh báo rằng thời điểm đó sắp tới, nên tôi mở shell và chạy lệnh watch cùng lệnh date in ra số giây epoch để chứng kiến khoảnh khắc ấy
      Rồi tôi quay lại làm việc
    • Tôi nhớ khoảnh khắc đó! Lúc ấy tôi đang ở đâu đó như quán bar, nhưng đã chuẩn bị sẵn nên mang theo laptop
      Tôi cứ liên tục nhấn mũi tên lên và Enter để không bỏ lỡ
  • Một trong những phần tôi thích trong A Deepness in the Sky của Vinge là việc dùng thời gian thập phân: các đơn vị như ksec, Msec
    Có một thang log rất hay cho thấy cách chuyển đổi giữa thời gian Trái Đất và thời gian thập phân

    • Đúng vậy! Nhờ cuốn sách đó mà giờ tôi biết không cần tra cứu rằng ksec khoảng 15 phút, còn Msec khoảng 2 tuần
      Khi tính nhẩm đại khái thì nó hữu ích thường xuyên hơn tôi tưởng
      Tôi đã biết Gsec khoảng một phần ba thế kỷ nhờ nhận xét của Tom Duff
      Tôi không nghĩ hệ thống kiểu này sẽ sớm được chuyển sang dùng phổ biến. Các đơn vị gắn với nhịp sinh học quá tiện lợi
      Dù vậy, tôi hơi ngạc nhiên là nó không xuất hiện thường xuyên hơn khi bàn về con người trong không gian
      [0] "How many seconds are there in a year? If I tell you there are 3.155 x 10^7, you won't even try to remember it. On the other hand, who could forget that, to within half a percent, pi seconds is a nanocentury." --Tom Duff
    • Các nhà khảo cổ phần mềm trong cuốn sách đó đã nhầm tưởng rằng epoch của time_t không đơn giản là năm 1970 mà là chỉ mốc hạ cánh lên Mặt Trăng :)
    • Emergents cũng hay. Đó là một thế giới nơi những người cấp tiến tự do tạo ra một utopia, tỷ lệ việc làm 100%, và ai cũng được cung điện kim cương
  • Còn 5.148 ngày nữa là đến 19 tháng 1 năm 2038
    Nếu sống đến lúc đó, ngày hôm sau sẽ là sinh nhật lần thứ 65 của tôi. Tức là tôi đến đúng lúc Armageddon kỹ thuật số

  • Thay vì kỷ niệm khoảnh khắc ký pháp thập phân thay đổi, hợp lý hơn là kỷ niệm khoảnh khắc một bit ở vị trí tương đối cao chuyển từ 0 sang 1

  • Tôi thích đơn vị 100 triệu giây
    Dài hơn 1 năm và ngắn hơn 10 năm. Kỷ nguyên 1.6e8 là đại dịch. 1.7e8 sẽ mang đến điều gì?

  • Tôi thích việc những người khác cũng hào hứng với những thứ như thế này. Nếu là người yêu thích UNIX Timeval, bạn nên thử công cụ tf này [1]
    Tôi đã dùng thứ một người bạn viết bằng C/Lex/Yacc hằng ngày suốt 15 năm rưỡi, rồi port sang Golang + Homebrew để chia sẻ niềm vui đó
    [1] https://github.com/neomantra/tf
    brew tap neomantra/homebrew-tap
    brew install tf
    Thử in ra các con số tròn như thế này. tf tự động nhận diện ở 10 chữ số, nên seq cũng bắt đầu từ đó

    for TV in $(seq -f %.f 1000000000 100000000 2000000000); do echo $TV $TV | tf -d ; done
    2001-09-08 18:46:40 1000000000
    2004-11-09 03:33:20 1100000000
    2008-01-10 13:20:00 1200000000
    2011-03-12 23:06:40 1300000000
    2014-05-13 09:53:20 1400000000
    2017-07-13 19:40:00 1500000000
    2020-09-13 05:26:40 1600000000
    2023-11-14 14:13:20 1700000000
    2027-01-15 00:00:00 1800000000
    2030-03-17 10:46:40 1900000000
    2033-05-17 20:33:20 2000000000
    Cũng có những ngày thú vị. -g nhận diện nhiều mục trên một dòng, còn -d bao gồm cả ngày tháng
    echo 1234567890 __ 3141592653 | tf -gd
    2009-02-13 15:31:30 __ 2069-07-20 17:37:33
    Chúc dùng vui. Hy vọng nó giúp bạn tiết kiệm thời gian tìm ra thời gian!