2010-09-21 47 views
2

好奇人们如何解决这个问题... 我有一系列的工作,一夜之间运行,根据当天的数据为客户汇总报告。他们现在要求提供时区支持。你如何处理数据处理的时区?

其中一个报告是..你昨晚有多少个订单,但是昨晚可能因时区不同而不同。组织或处理数据的最佳方式是什么,以便将时区考虑在内以使工作更轻松?

谢谢

回答

3

在UTC时区中表示所有日期是一种很好的做法。这个时区没有令人困惑的夏令时。然后,美国/太平洋时区的客户可以要求提供2010年至2009年至2013年间的订单报告:00-700至2010-09-21T00:00-700(使用ISO 8601 format)。程序的输入层应该将客户日期和存储的订单日期都转换为UTC以来的时间,然后从那里开始。

+0

数据不是动态提取的,它运行在夜间作业上。因此,如果订单在12:01太平洋标准时出现,它将在第二天的运行中处理。 – James 2010-09-21 19:42:58

+0

无论何时拉动数据,您的时区行为应该都是相同的。用户使用明确的时区输入日期,并且您的代码所做的第一件事是将其转换为自UTC时代以来的秒数。从那时起,它就是同一时间线上的所有整数。明白了吗? – 2010-09-22 20:16:22

1

在我的应用程序中,我保存当地时间加上抵消到UTC。这样,我仍然可以在代码中比较这些值(通过将它们转换为通用时间),但是当我将它显示在屏幕上时,用户将看到他们期望的时间(“是的,我昨天晚上9:30就做到了这一点)” 。使用开关,他们可以显示时区或切换到通用时间或在当地时间显示所有时间。

+0

这将用于需要离线处理并汇总为摘要数据的每日TB数据。 – James 2010-09-21 19:43:34

+0

我请你原谅? – 2010-09-22 09:21:14

0

根据我的经验,我们在夜间运行期间将数据汇总到小时(或15分钟)的桶中。然后,您可以根据用户请求的报告时区来抓取相关的存储桶。