Конвертировать из LocalTime в TimeSpan - PullRequest
2 голосов
/ 10 января 2020

Я использую NodaTime и Entity Framework Core в своем приложении. Я использую AutoMapper для преобразования из моих моделей (которые используют LocalTime) в мои объекты (которые используют Timespan, который сопоставлен с Time в Sql Server). Я делаю это таким образом, чтобы избежать ловушек EF ValueConversions.

При переходе от сущностей к моделям (т. Е. Timespan к LocalTime) я нашел «официальный» способ сделать это (https://github.com/nodatime/nodatime/issues/148 ):

LocalTime.FromTicksSinceMidnight(timespan.Ticks)

Но, переходя от моделей к сущностям (то есть от LocalTime к Timespan), я не уверен, что лучший способ. Даты и время кажутся слишком сложными, чтобы просто взять часы, минуты и т. Д. c вроде:

new TimeSpan(localTime.Hour, localTime.Minute, localTime.Second, localTime.Second, localTime.Millisecond)

Должен ли я использовать тики, как при переходе от LocalTime к Timespan?

TimeSpan.FromTicks(localTime.TickOfSecond)

1 Ответ

2 голосов
/ 11 января 2020

Преобразование из LocalTime в TimeSpan, вы действительно можете использовать тики - но вы хотите TickOfDay:

TimeSpan timeSinceMidnight = TimeSpan.FromTicks(localTime.TickOfDay);
...