【问题标题】:C# DateTimeOffset comparision with LocalDateC# DateTimeOffset 与 LocalDate 的比较
【发布时间】:2016-11-08 06:37:41
【问题描述】:

我正在使用返回 DateTimeOffset 的 Microsoft API。该属性具有以下文档 - 此值是根据本地测量的当前 UTC 时间计算的。

我想将此时间与托管我的应用程序的本地服务器进行比较。 (所以 DateTimeOffset 由 Microsoft API 返回,我要比较的地方在我的服务器上。这两个可以有不同的时区)。

检查DateTimeOffset 时,日期和UTC 属性具有相同的日期和时间,而Kind 属性未指定。

我目前正在使用DateTimeOffset < DateTime.UtcNow 来检查条件。我做得对吗?

【问题讨论】:

    标签: c# .net c#-4.0


    【解决方案1】:

    你应该使用dateTimeOffset.LocalDateTime < dateTime

    .LocalDateTime 方法会将DateTimeOffset 转换为您当地的时区(使用DateTimeKind.Local),因此您可以安全地与您当地的DateTime 进行比较。

    【讨论】:

    • 这似乎相当正确,我会试一试,检查 staging 并查看一切是否符合预期以标记此答案!那个条件不应该是DateTimeOffset.ToLocalTime().DateTime < DateTime.Now 吗?
    【解决方案2】:

    您可以使用以下代码以分钟为单位获取偏移时差

    // Get the GMT time difference offset (This is your local time offset difference)
    var timeOffsetinMiniut = DateTimeOffset.Now.Offset.TotalMinutes;
    

    现在您可以使用在本地时间添加此偏移量以使其成为 UTC 时间。

    var myNewDateTime = System.DateTime.Now.AddMinutes(timeOffsetinMiniut)
    

    现在您可以比较时间 UTC 时间和您的新服务器时间。

    myNewDateTime  < DateTime.UtcNow
    

    希望这会对你有所帮助。

    谢谢

    【讨论】:

    • 我怀疑这是否可行,因为您在上述解释中没有使用DateTimeOffset。在上述上下文中,DateTimeOffset 是一个具有从 Microsoft API 返回的值的变量。
    猜你喜欢
    • 2021-09-24
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 2020-12-20
    • 2017-01-06
    相关资源
    最近更新 更多