从 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);
我在我的应用程序中使用了 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);