Datetime 如何使用NodaTime保存时间戳?

Datetime 如何使用NodaTime保存时间戳?,datetime,datetimeoffset,nodatime,Datetime,Datetimeoffset,Nodatime,我使用基本UtcNow实现了以下功能,然后将其转换回UI。 这个场景的目的非常简单。 当我向数据库插入一个新的客户机时,我将它转换为UtcNow,这样我就有了这个记录的时间戳。 当我将其显示给用户时,我将其转换为本地(例如:您是“dd/MM/yyyy”之后的成员) 这是我的实现。我想知道如何通过NodaTime完成这项工作。而且,如果有人有更好的方法做这件事,我会很高兴听到 公共接口IDateTime { DateTime ToUtcNow{get;} DateTime FromUtc(Date

我使用基本UtcNow实现了以下功能,然后将其转换回UI。 这个场景的目的非常简单。 当我向数据库插入一个新的客户机时,我将它转换为UtcNow,这样我就有了这个记录的时间戳。 当我将其显示给用户时,我将其转换为本地(例如:您是“dd/MM/yyyy”之后的成员)

这是我的实现。我想知道如何通过NodaTime完成这项工作。而且,如果有人有更好的方法做这件事,我会很高兴听到

公共接口IDateTime
{
DateTime ToUtcNow{get;}
DateTime FromUtc(DateTime dateTimeToConvert);
}
公共类DateTime提供程序:IDateTime
{
公共日期时间ToUtcNow
{
获取{return DateTime.UtcNow;}
}
UTC的公共日期时间(DateTime dateTimeToConvert)
{
return dateTimeToConvert.ToLocalTime();
}
}
另外,我应该如何将其保存到数据库中,在本例中是Sql Server。我应该使用什么数据类型?DateTime,DateTimeOffset?那代码呢?OffsetDateTime,ZoneDateTime我对此很困惑。我已经阅读了用户指南,但它显示了更复杂的场景,我无法在这样一个简单的场景中实现它


提前谢谢

听起来你好像在尝试存储时间点,而不管日历系统或时区如何。这些由Noda Time中的
Instant
值表示。因此,在大多数代码中,这可能就是您应该用来表示时间戳的内容。(这也是
IClock.Now
将提供给您的。)

然而,你的数据库不太可能知道野田佳彦的时间。。。我建议您可能应该存储一个
DateTimeOffset
,您可以通过
Instant.ToDateTimeOffset
(还有
Instant.FromDateTimeOffset
)获得它。这将始终具有0的偏移量,但至少在该偏移量表示的时间点上不存在歧义