2015-08-03 9 views
5

Mam ZonedDateTime i chcę wyświetlić go tak, że datetime jest sformatowany z krótkim terminem i krótkim czasie skonfigurowanym na stacji roboczej, a następnie offset (coś w stylu. .. 05.01.2005 02:30 PM -05: 00). Spodziewałem coś jak to będzie działać ...Z NodaTime, jak sformatować ZonedDateTime w obecnej kulturze

var patternDateTimeOffset = 
    ZonedDateTimePattern.CreateWithCurrentCulture("g o<m>", DateTimeZoneProviders.Tzdb); 
lblOriginalDateTimeAndOffsetVal.Text = patternDateTimeOffset.Format(zonedDateTime); 

ale wydaje się, że „g” nie jest obsługiwana w ZonedDateTimePattern tak jest w LocalDateTimePattern. Powyższy kod generuje wyjątek NodaTime.Text.InvalidPatternException.

Mogłabym zastąpić "g" przez "MM/dd/rrrr gg: mm", ale wtedy nie używa on obecnej kultury.

Mogę użyć obiektu LocalDateTimePattern dla datetime, a następnie połączyć offset za pomocą ZonedDateTimePattern. To działa, ale wydaje się brzydkie.

Wydaje się to dość powszechne. Jestem nowy w NodaTime, więc jestem pewien, że czegoś mi brakuje. Używam NodaTime 1.3.1 i kieruję na .net 4.0. Każda pomoc jest doceniana.

+0

Czy możesz zalogować to jako żądanie funkcji w [tracker problemów Noda Time] (https://github.com/naksime/naksime/issues)? Dzięki. –

Odpowiedz

6

g jest w porządku jako standardowy wzorzec wzoru - ale tylko sam; nie może być częścią niestandardowego wzorca, który skutecznie starasz się tutaj zrobić. Jesteś skutecznie stara się łączyć i dopasowywać, które nie obsługują :(

Jak również opcji już zarysowanych (które zgadzają będzie działać, ale są nieco brzydki) można użyć

var bclDateFormat = CultureInfo.CurrentCulture.DateTimeFormat; 
var localDateTimePattern = 
    bclDateFormat.ShortDatePattern + " " + bclDateFormat.ShortTimePattern; 
var patternDateTimeOffset = ZonedDateTimePattern.CreateWithCurrentCulture(
    localDateTimePattern + " o<m>", 
    DateTimeZoneProviders.Tzdb); 

Wciąż niezbyt przyjemny, co prawda - ale to skutecznie, co g robi mimo to (korzysta z dwóch istniejących krótkie wzory i tylko przestrzeń, dzielącą je)

Jak powiedział Matt, proszę złożyć wniosek fabularny. - nie jestem jasne, jakie jest najlepsze podejście, ale pomyślę o tym.

Powiązane problemy