Công cụ dành cho nhà phát triển · Trình chuyển đổi dấu thời gian Unix
Cách chuyển đổi tiết kiệm ánh sáng ban ngày thay đổi những gì cột giờ địa phương hiển thị
· Cách thức hoạt động
dấu thời gian time-zones gỡ lỗi
Hai lần một năm đồng hồ địa phương nhảy và các giá trị kỷ nguyên xung quanh quá trình chuyển đổi tạo ra thời gian địa phương lặp lại hoặc không bao giờ tồn tại. Bài đăng này giải thích cơ chế để đầu ra của trình chuyển đổi xung quanh thay đổi DST là hợp lý.
Sự kiện được ghi lại vào lúc 01:30 hai lần — hai kỷ nguyên cách nhau một giờ và cả hai đều hiển thị cùng thời gian trên đồng hồ treo tường địa phương
Hai kỷ nguyên riêng biệt có thể định dạng thành cùng một nhãn đồng hồ treo tường trong quá trình thay đổi độ lệch lùi. Sổ làm việc đã sửa nhãn đó ở 01:30 nhưng kho lưu trữ không thiết lập giờ chuyển tiếp chung. Khoảng thời gian lặp lại thuộc về các quy tắc áp dụng của vùng trình duyệt, không thuộc về thời gian Unix.
Khi các bản sao xuất hiện, hãy giữ kỷ nguyên, hàng ISO và phần bù được hiển thị cùng nhau. Chỉ sắp xếp cột `HH:mm` cục bộ có thể đảo ngược hoặc thu gọn các sự kiện. Kết xuất UTC của ToolAcre mang lại cho mỗi khoảnh khắc một điểm cố định theo trình tự thời gian duy nhất ngay cả khi khuôn mặt địa phương quen thuộc quay lại một phạm vi trước đó.
Có thể đọc lặp đi lặp lại cục bộ; xác minh quá trình chuyển đổi thực tế trong trình duyệt của bạn thay vì giả sử 01:30
Số lượng kỷ nguyên tiến triển thông qua quá trình chuyển đổi mà không thay đổi đơn vị hoặc nguồn gốc của nó. Những thay đổi nào được áp dụng cho phần bù Intl khi định dạng Ngày trong vùng cục bộ. Hai giây liên tiếp vẫn liên tục trong UTC ngay cả khi nhãn cục bộ của chúng có vẻ nhảy xa hơn hoặc lùi lại.
Sự khác biệt này ngăn ngừa sự “sửa đổi” mang tính phá hoại. Trừ một giờ khỏi các kỷ nguyên được lưu trữ vì bảng thông tin lặp lại một giờ sẽ thay đổi các sự kiện hợp lệ. Sửa định dạng, nhóm hoặc sự mơ hồ trong nhãn hiển thị. Bảo quản máy ngay lập tức trừ khi có bằng chứng cho thấy bản thân đồng hồ nguồn đã sai.
Một bất biến hữu ích tồn tại sau mỗi thay đổi bù trừ: trừ đi hai giá trị kỷ nguyên sẽ cho ra khoảng thời gian trôi qua thực sự của chúng. Việc trừ thời gian trên tường được định dạng có thể không thực hiện được vì độ lệch của chúng có thể khác nhau.
Quá trình chuyển đổi thay đổi phần bù áp dụng trong khi kỷ nguyên vẫn liên tục
Trong quá trình thay đổi offset về phía trước, một loạt nhãn tường cục bộ có thể không được tạo ra. Chiều rộng và vị trí của nó không thể được khái quát hóa một cách an toàn từ việc triển khai này; ToolAcre hỏi Quốc tế và báo cáo kết quả. Nó không chứa giả định được mã hóa cứng rằng mỗi ca làm việc là một giờ hoặc diễn ra lúc 02:00.
Trình chuyển đổi bắt đầu từ thời điểm hiện có nên nó chỉ hiển thị số đọc cục bộ có thể áp dụng ở cả hai bên. Lập kế hoạch cho đầu vào cục bộ không tồn tại là một thao tác khác. Nếu một biểu mẫu phải giải quyết tình huống đó, chính sách sản phẩm của biểu mẫu đó phải quyết định nên từ chối, di chuyển hay diễn giải lại thời gian treo tường được yêu cầu.
Quá trình chuyển đổi về phía trước có thể bỏ qua các bài đọc cục bộ; khoảng thời gian chính xác phụ thuộc vào quy tắc vùng được xác minh
Một thay đổi lùi làm cho một phạm vi khác xuất hiện nhiều lần dưới các độ lệch khác nhau. Văn bản cục bộ trở nên không đủ trừ khi nó bao gồm phần bù hoặc kỷ nguyên liên quan. ToolAcre yêu cầu `shortOffset`, cung cấp cho người đọc cách phân biệt hai kết xuất khi nền tảng cung cấp định dạng đó.
Do đó, việc sao chép cơ sở dữ liệu được khóa theo ngày và phút cục bộ có thể loại bỏ một bản ghi thực. Các sự kiện quan trọng có số nhận dạng ổn định và lưu trữ thời điểm của chúng. Các trường lịch địa phương là các phép chiếu truy vấn hữu ích nhưng chúng không được thay thế giá trị phân biệt lần xuất hiện đầu tiên với lần xuất hiện thứ hai.
Quá trình chuyển đổi ngược có thể lặp lại các bài đọc cục bộ; khoảng thời gian chính xác phụ thuộc vào quy tắc vùng được xác minh
Sử dụng tài liệu chuyển tiếp cho vùng được định cấu hình trên thiết bị thử nghiệm của bạn, sau đó chọn hai kỷ nguyên cách nhau một giờ xung quanh vùng đó. Chuyển đổi rõ ràng từng giây dưới dạng giây và ghi lại ISO, đầu ra cục bộ và độ lệch. Nếu các nhãn địa phương ứng trước một số tiền khác với UTC thì khoản chênh lệch thay đổi sẽ chiếm phần chênh lệch.
Phương pháp này cố tình không mã hóa ngày hoặc thành phố. Tác vụ cảnh báo chống lại việc khẳng định các quy tắc chuyển tiếp vùng được đặt tên mà không có bằng chứng và kho lưu trữ không có cố định vùng cố định. Cặp quan sát của bạn trở thành một ví dụ hoạt động có thể tái tạo cho môi trường đó trong khi bài viết vẫn trung thực với độc giả ở nơi khác.
Ví dụ đã hoạt động: lấy cặp chuyển tiếp từ trình chuyển đổi thay vì xuất bản quy tắc vùng chưa được xác minh
Một số vùng được định cấu hình có thể không có thay đổi theo mùa trong năm thử nghiệm; những người khác có thể khác nhau giữa các ngày lịch sử. Trình chuyển đổi có thể hiển thị những kết quả đó nhưng không giải thích hoặc phiên bản các quy tắc. Phép tính offset cố định không thể phát hiện ra các điểm thay đổi vì nó giả định tính không đổi đang được kiểm tra.
Để kiểm tra hồi quy, hãy ghim một môi trường và ghi lại dữ liệu nền tảng dự kiến của nó thay vì coi một máy tính xách tay là phổ biến. Để được hỗ trợ, hãy yêu cầu tên vùng, phần bù tức thời và kết xuất. Chỉ nói “DST sai” sẽ bỏ qua bằng chứng cần thiết để tái tạo những gì trình duyệt thực sự được định dạng.
Điều này không bao gồm những gì - lập kế hoạch thời gian địa phương trong tương lai dựa trên thay đổi DST, yêu cầu quy tắc vùng thay vì chênh lệch cố định
Bảng điều khiển này chuyển đổi ngay lập tức đã được biết đến. Nó không tính toán cuộc hẹn định kỳ trong tương lai, chẳng hạn như “thứ Hai hàng tuần lúc 09:00” thông qua các thay đổi bù trừ. Công việc đó bắt đầu bằng một vùng được đặt tên và chính sách dành cho các khoảng trống và chồng chéo, cả hai đều không được biểu thị bằng một kỷ nguyên cố định.
Việc kết hợp hai quy trình công việc gây ra một lỗi nhỏ: việc thêm bảy lần 86,400 giây sẽ duy trì thời lượng đã trôi qua, không nhất thiết phải có cùng nhãn đồng hồ treo tường trong tương lai. Sử dụng logic lập lịch được xây dựng để lặp lại theo thời gian dân sự. Sau đó, hãy sử dụng trình chuyển đổi kỷ nguyên để kiểm tra các lần xuất hiện đã được giải quyết cụ thể.
Ngoài ra, bộ lập lịch phải giữ lại xem người dùng muốn nói đến lần xuất hiện sớm hơn hay muộn hơn trong quá trình chồng chéo. Lựa chọn đó không có đại diện trong chuỗi đồng hồ bù cố định duy nhất.
Bài học rút ra: tin tưởng vào thời đại, nghi ngờ đồng hồ treo tường — và cách đọc UTC của trình chuyển đổi dấu thời gian Unix neo giữ đồng hồ cục bộ
Tin tưởng vào thời điểm đặt hàng và coi đồng hồ treo tường như một kết xuất phụ thuộc vào ngữ cảnh. ToolAcre giữ một hằng số Ngày trong khi Intl cung cấp UTC và các biểu mẫu địa phương. Do đó, một bước nhảy hoặc sự lặp lại đáng ngạc nhiên có thể được kiểm tra mà không làm thay đổi số lượng cơ bản.
Gói gỡ lỗi an toàn là giá trị thô, đơn vị, đầu ra ISO, nhãn vùng cục bộ và phần bù. Với các trường đó, quá trình chuyển đổi được hiển thị dưới dạng thay đổi quy tắc định dạng. Nếu không có chúng, văn bản đồng hồ lặp đi lặp lại sẽ mời bạn đoán về các yêu cầu trùng lặp, hàng đợi bị trì hoãn hoặc đồng hồ máy chủ bị hỏng mà dữ liệu không hỗ trợ.
Gói bằng chứng này cũng làm cho các báo cáo lỗi có thể di chuyển được. Một kỹ sư khác có thể tái tạo tức thì UTC ngay cả khi kết xuất vùng cục bộ của họ và đồng hồ treo tường hoàn toàn khác nhau.