【发布时间】:2014-11-17 06:45:01
【问题描述】:
我正在开发一个与销售和采购报告相关的应用程序。 我正在使用该购买和销售报告的数据生成图表。
采购订单和销售订单的创建日期是相对于 (UTC + 5.30) 时间的,即这个时间是针对印度孟买的。
场景-1
假设这是场景(目前这个应用程序在印度用于这个场景)
Lets Say,
**Purchase Order & sales Order Generation is as follows**
Purchase Order(Rs) Sales Order(Rs)
31-Jan-2014 11.00PM 1000 2000
31-Jan-2014 10.00PM 2000 4000
如果我创建图表,那么图表的数据将如下所示。
Purchase Sales
Jan-2014 3000 6000
我对这种情况没有任何问题,
但是假设我在美国有一个分支机构,而我的一位美国同事创建了相同的采购订单和销售订单,那么我的问题如下开始
场景-2
假设是这个场景(目前这个应用在美国用于这个场景)
Lets Say,
**Purchase Order & sales Order Generation is as follows**
Purchase Order(Rs) Sales Order(Rs)
31-Jan-2014 11.30PM 1000 2000
31-Jan-2014 11.00PM 2000 4000
据此,如果我创建一个图表,那么图表的数据将如下所示。
Purchase Sales
Feb-2014 3000 6000
原因:因为我使用 (UTC+5.30) 时间来创建采购和销售报告。
对于坐在美国并在 2014 年 1 月 31 日下午 12 点
(美国时间为 UTC)
So According to US, Sales & purchase Order Date is 31-Jan
So According to India, Sales & purchase Order Date is 1-Feb
问题: 那么解决这个问题的标准方法是什么,我应该在图表或整个应用程序中显示什么,使用美国时间、印度时间或某个公共时间 因为使用此应用程序的最终用户不知道什么是 UTC,所以他只会对正确的值感兴趣。
谢谢。 任何帮助将不胜感激。
【问题讨论】:
-
可能有两个选项。您可以将所有日期存储在单个时区(我会更喜欢)中,或者将时区与日期一起保存,以便您可以相应地转换它以编写查询..
-
处理这种情况的标准方法是什么。
-
您说的是印度时间或美国时间。两个客户端都只能看到该时区
-
标准方式是将整个应用程序中的数据存储在单个时区 (UTC) 中。您始终可以将此时区转换为本地时区,以根据用户的位置向用户显示相应的时间。
-
但是日期还有一个更严重的问题是,如果我手动进入我的计算机设置并将日期更改为一年,那么假设我已经创建了采购订单,那么插入日期也必须是今天的日期怎么可能?
标签: c# sql asp.net sql-server utc