C# 在不同的当地时间,一天的数据价值

C# 在不同的当地时间,一天的数据价值,c#,datetime,utc,C#,Datetime,Utc,我有一个winform客户端和wcf服务,它们一起显示历史数据。使用utc时间戳存储在数据库中的数据。如果两个位于不同时区的客户希望根据其本地时间查看最近一天的数据,他们是否可能查看不同的数据集?这取决于具体情况 如果一天的价值意味着最后24小时,那么他们将看到相同的数据。 如果一天的价值意味着用户本地时区中当前日期1的00:00-23:59,那么他们可能会看到不同的数据。 例如: event 1 event 2 +---- service request

我有一个winform客户端和wcf服务,它们一起显示历史数据。使用utc时间戳存储在数据库中的数据。如果两个位于不同时区的客户希望根据其本地时间查看最近一天的数据,他们是否可能查看不同的数据集?

这取决于具体情况

如果一天的价值意味着最后24小时,那么他们将看到相同的数据。 如果一天的价值意味着用户本地时区中当前日期1的00:00-23:59,那么他们可能会看到不同的数据。 例如:

      event 1      event 2       +---- service request
         |            |          v

|---------------|---------------|-  days in Central Europe

--------|-----------------|-------  days in the US (Pacific time)

---------------|---------------|--  UTC day boundaries
在案例1中,您只需返回服务请求后的24小时。不难看出,美国和欧洲的客户都将获得相同的活动列表

在第二种情况下,情况更加困难:就美国时间而言,事件1和2发生在同一天。就欧洲而言,这两个事件发生在不同的日子,因此美国客户和欧洲客户的结果将不同。

这取决于具体情况

如果一天的价值意味着最后24小时,那么他们将看到相同的数据。 如果一天的价值意味着用户本地时区中当前日期1的00:00-23:59,那么他们可能会看到不同的数据。 例如:

      event 1      event 2       +---- service request
         |            |          v

|---------------|---------------|-  days in Central Europe

--------|-----------------|-------  days in the US (Pacific time)

---------------|---------------|--  UTC day boundaries
在案例1中,您只需返回服务请求后的24小时。不难看出,美国和欧洲的客户都将获得相同的活动列表


在第二种情况下,情况更加困难:就美国时间而言,事件1和2发生在同一天。就欧洲而言,这两个事件都发生在不同的日子,因此美国客户和欧洲客户的结果会有所不同。

没有进一步的细节,答案是两者都有

如果在本地时区中定义了一天,然后在向db发出请求之前将其更改为UTC格式,则它们将具有不同的数据集

如果查询类似于

select * from dbTable where TimeStamp >= '9/22/2010' and TimeStamp < '9/23/2010' 

然后,它们将返回两个时区的相同数据集


如果没有进一步的细节,答案是两者兼而有之

如果在本地时区中定义了一天,然后在向db发出请求之前将其更改为UTC格式,则它们将具有不同的数据集

如果查询类似于

select * from dbTable where TimeStamp >= '9/22/2010' and TimeStamp < '9/23/2010' 

然后,它们将返回两个时区的相同数据集


这当然是可能的——这是全球化/本地化的共同问题之一。
要做的重要事情是在进行查询之前将所有请求转换为UTC时间。如果查询都是基于UTC的,那么返回到本地机器的数据应该匹配,因为UTC时间将匹配。

这当然是可能的-这是全球化/本地化的常见问题之一。
要做的重要事情是在进行查询之前将所有请求转换为UTC时间。如果查询都是基于UTC的,那么返回到本地机器的数据应该匹配,因为UTC时间将匹配。

嗨,Heinzi,你能解释一下这两种情况之间的区别吗?@user428468:Edited my answer.hmm这使问题更加清楚。所以从你的解释来看,我想实施第二个案例,这将使它变得困难,原因与你刚才所说的相同。在这种情况下,我需要通知用户,尽管他/她可能在当地时间查找1天的数据,但数据库中有一些更新鲜的数据可用。这是一个很好的解决方案吗?嗨,海因茨,你能解释一下这两种情况之间的区别吗?@user428468:编辑了我的答案。嗯,这让问题更清楚了。所以从你的解释来看,我想实施第二个案例,这将使它变得困难,原因与你刚才所说的相同。在这种情况下,我需要通知用户,尽管他/她可能在当地时间查找1天的数据,但数据库中有一些更新鲜的数据可用。这是一个好的解决方案吗?