之前有个类似的话题:夏令时和时区最佳实践
我想问的是相关的,但不同的。
日期处理的建议做法是什么?
我正在寻找一个更“合乎逻辑”的日期。例如,我们申请的营业日期,或某些人的出生日期。
通常我将它存储为日期(在 Oracle 中),时间为 0:0:0。如果我的应用程序的所有组件都在同一个时区,这将正常工作。因为数据库中的日期意味着数据库时区的 0:0:0,如果我将我的数据呈现给另一个时区的用户,它很容易出现问题,因为例如,日期 2012-12-25 0:0:0伦敦时间实际上是香港时间 2012-12-24 16:0:0。
我想了两种方法来解决,但它们都有其不足之处。
首先,我们将其存储为字符串。缺点很明显:我需要在我们的应用程序或查询中进行大量对话,并且丢失了很多日期算术
第二种方法是将其存储为日期,但具有预定义的时区(例如 UTC)。当应用程序显示日期时,它必须显示为 UTC 时区。但是,我需要在我的应用程序代码中进行大量时区操作。
处理日期的建议方法是什么?还是大多数人只是使用上述 3 种方法中的一种(包括假设为相同时区的方法)?