Мой обходной путь, на данный момент, следующий:
на стороне клиента (API сериализует только дату ISO, т.е. «1985-04-24») Я написал эту функцию,
function formatApiLocalDate(date: Date): Date {
if (date) {
return new Date(moment(date.toString()).format());
}
return null;
}
ИЛИ
На стороне сервера (API сериализует DateTimeOffset, т.е. "1985-04-04T23: 59: 59-08: 00"). В моем случае я использую NodaTime
, поэтому его OffsetDateTime
, я написал этот метод расширения,
public static OffsetDateTime ToOffsetDateTimeUTC (this LocalDate localDate, string tzId) {
LocalTime time = new LocalTime (23, 59, 59);
LocalDateTime localDateTime = (localDate + time);
DateTimeZone dtz = DateTimeZoneProviders.Tzdb[tzId];
Offset offset = dtz.GetUtcOffset (Instant.FromUtc (localDateTime.Year, localDateTime.Month, localDateTime.Day, time.Hour, time.Minute));
return new OffsetDateTime (localDateTime, offset);
}