从 LocalTime 转换为 TimeSpan

Convert from LocalTime to TimeSpan

我在我的应用程序中使用了 NodaTime 和 Entity Framework Core。我正在使用 AutoMapper 将我的模型(使用 LocalTime)转换为我的实体(使用映射到 Sql 服务器中的时间的时间跨度)。我这样做是为了避免 EF ValueConversions 的陷阱。

从实体到模型(即 Timespan 到 LocalTime)时,我找到了 "official" 方法 (https://github.com/nodatime/nodatime/issues/148):

LocalTime.FromTicksSinceMidnight(timespan.Ticks)

但是,从模型到实体(即 LocalTime 到 Timespan),我不确定最好的方法是什么。日期和时间似乎太棘手了,不能只抓住小时、分钟等,比如:

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

我应该像从 LocalTime 到 Timespan 时那样使用刻度吗?

TimeSpan.FromTicks(localTime.TickOfSecond)

LocalTime 转换为 TimeSpan,您确实可以使用刻度 - 但您需要 TickOfDay:

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