Tôi đang cố gắng viết một số mã để ngủ cho đến khi bắt đầu phút tiếp theo trong múi giờ địa phương, nhưng đang gặp khó khăn lớn khi làm như vậy. Thư viện time
luôn là một trong những điểm yếu của tôi, vì vậy tôi giả sử có một số cách dễ dàng để thực hiện việc này.Ngủ cho đến khi bắt đầu phút tiếp theo
Tôi nghĩ chỉ cần tính toán TimeOfDay mới, nhưng điều đó sẽ không xử lý 23:59 đến 00:00 và có lẽ sẽ làm những điều rất khó hiểu với thời gian tiết kiệm ánh sáng ban ngày.
Xử lý giây nhảy vọt cũng sẽ là một phần thưởng hấp dẫn.
Sử dụng Control.Concurrent.threadDelay để ngủ có vẻ như phương pháp đơn giản nhất đối với tôi, do đó, một câu hỏi thay thế sẽ là: Làm thế nào tôi có thể nhận được số micro giây cho đến khi bắt đầu phút tiếp theo? DiffTime
và NominalDiffTime
sẽ là cách hoàn toàn chấp nhận được để đạt được điều này.
Bạn có thể lấy thành phần giây của thời gian hiện tại và sau đó ngủ (60 giây) giây không? Leap-giây ngoài, mà nên làm việc hợp lý tốt. Làm thế nào chính xác bạn muốn thức dậy được? –
Điều đó sẽ hiệu quả nếu không có cách nào khác để thực hiện nó mà không có tính toán thủ công hoàn toàn, nhưng sẽ là một sự xấu hổ để mất đi độ chính xác gia tăng mà tôi có thể nhận được với cùng một dữ liệu. Nó không phải là một thỏa thuận lớn, mặc dù; là một thứ hai hoặc lâu hơn không phải là một vấn đề, nhưng tôi chắc chắn muốn tránh thức dậy * trước * phút tiếp theo bắt đầu - lỗi mà nó tạo ra sẽ chỉ được sửa chữa vào phút tiếp theo. Phải thừa nhận rằng, giây nhảy vọt không phải là rất phổ biến. – ehird
Hmm, tài liệu cho 'UTCTime' dường như ngụ ý rằng các giây nhuận không được xử lý bởi các hành động đo lường như' getCurrentTime', do đó, nó sẽ là một giải pháp có thể chấp nhận được sau tất cả; trường số giây thực sự được đưa ra cho độ chính xác picosecond, vì vậy nó sẽ mang lại độ chính xác cao nhất mà tôi có thể hy vọng. Tôi sẽ thử. – ehird