【问题标题】:Get DateTimeOffset for another DateTimeOffset获取另一个 DateTimeOffset 的 DateTimeOffset
【发布时间】:2014-02-06 08:51:48
【问题描述】:

我有一个返回事件的 web api。每个事件都在给定日期发生,该日期被抽象为 DateTimeOffset。现在在服务器上,我想根据事件 datetimeoffset 而不是服务器 datetimeoffset 来检查给定事件是否发生了

例如一个事件的 datetimeoffset 为 2014-02-06 10:00:00+0300,服务器为 datetimeoffset 2014-02-06 10:00:00+0100。如何检查事件是否已经发生?

【问题讨论】:

  • 如何将事件时间转换为 UTC 并与 DateTime.UtcNow 进行比较?

标签: c# date datetime datetimeoffset


【解决方案1】:

我相信你可以直接比较这两个DateTimeOffset。或者,您可以使用UtcDateTime 属性来获取DateTimeOffset 的UTC 值并使用它进行比较。

示例:

var eventTime = new DateTimeOffset(2014, 2, 6, 10, 0, 0, 0, TimeSpan.FromHours(3));
var serverTime = new DateTimeOffset(2014, 2, 6, 10, 0, 0, 0, TimeSpan.FromHours(1));
var otherTime = new DateTimeOffset(2014, 2, 6, 10, 0, 0, 0, TimeSpan.FromHours(-1));

Console.WriteLine("\tLocalTime\t\t\tUtcTime\t\tInThePast");
Console.WriteLine("Server\t{0}\t{1}",serverTime, serverTime.UtcDateTime);
Console.WriteLine("Event\t{0}\t{1}\t{2}", eventTime, eventTime.UtcDateTime, eventTime < serverTime);
Console.WriteLine("Other\t{0}\t{1}\t{2}", otherTime, otherTime.UtcDateTime, otherTime < serverTime);

会产生:

        LocalTime                       UtcTime                 InThePast
Server  2/6/2014 10:00:00 AM +01:00     2/6/2014 9:00:00 AM
Event   2/6/2014 10:00:00 AM +03:00     2/6/2014 7:00:00 AM     True
Other   2/6/2014 10:00:00 AM -01:00     2/6/2014 11:00:00 AM    False

【讨论】:

    【解决方案2】:

    您可以使用 Offset Property,它在 -14 小时到 14 小时的范围内返回 TimeSpan object

    拥有该属性,您可以轻松计算事件是否已经发生。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 2020-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      相关资源
      最近更新 更多