Szukam pewnego rodzaju wsparcia OffsetTime
w NodaTime, ale nie widzę nic. Otrzymuję dane w formacie "17: 13: 00 + 10: 00". Mam traktować to jako przesunięcie czasowe, stosując je do określonej daty (którą kontroluje użytkownik), aby dotrzeć do czasu lokalnego w celu wyświetlania.OffsetTime w NodaTime
Najlepszą udało mi się wymyślić to:
// the date for this OffsetDateTime will be 1/1/2000
var parsed = OffsetDateTimePattern.CreateWithInvariantCulture("HH:mm:sso<G>").Parse(input).Value;
var desiredLocalDate = new LocalDate(2017, 06, 13);
var adjusted = new OffsetDateTime(
new LocalDateTime(desiredLocalDate.Year, desiredLocalDate.Month, desiredLocalDate.Day, parsed.Hour, parsed.Minute, parsed.Second, parsed.Millisecond),
parsed.Offset);
var localTime = adjusted.LocalDateTime;
myślę, zastanawiam się, czy ja widokiem lepszy sposób to zrobić.
[DateTimeZone] (http://nobiime.org/unstable/api/NodaTime.DateTimeZone.html)? –
Jestem zdezorientowany przez "zastosowanie go do określonej daty (której użytkownik kontroluje)". Oznacza to, że użytkownik kontroluje datę, ale nie ma wiedzy, że zostanie zastosowane przesunięcie? Czy użytkownik jest zobowiązany do wprowadzenia daty obowiązującej w strefie czasowej, w której znajduje się komputer użytkownika? Czy użytkownik wprowadza datę obowiązującą podczas pisania przez użytkownika, czy może to być starsza data, kiedy reguły strefy czasowej mogły być inne? –
Duże znaczenie ma to, czy data jest dzisiejszą datą, a program przetwarza ją natychmiast, czy jest to stara data. Aby ustalić lokalną datę starej daty, musisz znać nazwę strefy czasowej, a nie tylko przesunięcie, uwzględniającą czas letni i zmiany legislacyjne w strefach czasowych. –