datetime - 如何使用NodaTime保存时间戳?

标签 datetime datetimeoffset nodatime

我使用基本的 UtcNow 进行了以下实现,然后将其转换回 UI。 这个场景的目的非常简单。 当我将新客户端插入数据库时​​,我将其转换为 UtcNow,因此我有该记录的时间戳。 当我将其显示给用户时,我将其转换为本地(例如:您自“dd/MM/yyyy”起就是成员(member))。

这是我的实现。我想知道如何通过 NodaTime 完成此操作。而且,如果有人有更好的方法来做到这一点,我会很高兴听到!

public interface IDateTime
{
    DateTime ToUtcNow { get; }
    DateTime FromUtc(DateTime dateTimeToConvert);
}

public class DateTimeProvider : IDateTime
{
    public DateTime ToUtcNow
    {
        get { return DateTime.UtcNow; }
    }

    public DateTime FromUtc(DateTime dateTimeToConvert)
    {
        return dateTimeToConvert.ToLocalTime();
    }
}

另外,我应该如何将它保存到数据库,在本例中是 Sql Server。我应该使用什么数据类型?日期时间、日期时间偏移?那么在代码中呢? OffsetDateTime,ZonedDateTime 我对此感到非常困惑。我已阅读用户指南,但它显示了更复杂的场景,我无法在如此简单的场景中实现它。

提前致谢!

最佳答案

听起来您正在尝试存储时间点,无论日历系统或时区如何。这些由野田时间中的即时值表示。因此,在您的大部分代码中,您可能应该使用它来表示时间戳。 (这也是 IClock.Now 将为您提供的。)

但是,您的数据库不太可能了解 Noda Time...我建议您应该存储一个 DateTimeOffset,您可以通过 Instant.ToDateTimeOffset 获取它(还有 Instant.FromDateTimeOffset)。它的偏移量始终为 0,但至少它代表的时间点是明确的。

关于datetime - 如何使用NodaTime保存时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26853855/

相关文章:

java - 为什么 Java SimpleDateFormat().parse() 打印出奇怪的甲酸盐?

F# 制作不必要的 DateTimeOffset 副本

mysql - 给定NOW(),如何在MySQL中获取一周第一天的DATETIME对象?

php - 无法使用 PHP 检查日期时间字段值

python - 转换(YYYY-MM-DD-HH :MM:SS) date time

date - 野田市时间日期比较

calendar - 如何在 nodatime 中获取基于第一周的日历?

date - 如何将 OffsetDateTime 转换为带时间的日期

.net - DateTimeOffsetAdapter干扰DateTimeOffset对象的WCF序列化

c# - Nodatime 计算 X 天内的年/月/日