Что такое идиоматический способ получить время системы как LocalDateTime
в Noda Time? Самый прямой метод, который я мог думать, был быПолучение LocalDateTime системы в Noda Time
var dt = DateTime.Now
LocalDateTime systemTime = new LocalDateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute);
, но при условии, что Нод Время entire purpose is to replace DateTime with something that has nicer semantics, я предположил, был предпочтительный метод, чем использовать DateTime
вышеуказанного способа. Лучшее, что я мог придумать с использованием средств Ноды, - это
var zone = NodaTime.TimeZones.BclDateTimeZone.ForSystemDefault();
LocalDateTime systemTime = SystemClock.Instance.Now.InZone(zone).LocalDateTime;
но это кажется довольно многословным.
Спасибо за такой глубокий и информативный ответ! Re: дополнительные очки, я планирую вместо инъекции IClock. Кроме того, я хочу использовать системное время здесь. Код предназначен для техников, которые будут использовать в поле, чтобы установить время на микроконтроллере, который «слишком тупой», чтобы иметь концепцию часового пояса. Однако я использую Noda Time, потому что одна и та же библиотека также будет использоваться на нашем сервере для связи с устройствами по беспроводной сети после их настройки. –
Я сделал что-то подобное не так давно. В моем случае было более целесообразно связать каждое устройство с определенным часовым поясом, а не использовать часовой пояс машины, с которой они разговаривали. YMMV. –
Кроме того, вам может потребоваться подумать о том, как обращаться с изменениями DST на вашем устройстве. Это была другая область, с которой мне пришлось сосредоточиться на этом проекте. –