2009-02-25 78 views
1

将日期时间保存到数据库之前不久我将DateTime投射到OracleTimeStampTZ中。 这将DateTime转换为当前时区中的OracleTimeStampTZ,这很酷,这正是我想要的。除了时区被表示为时间设置(+13,因为我在新西兰)。将日期时间投射到OracleTimeStampTZ

现在我有点害怕这会咬我的屁股关于夏令时。我宁愿将OracleTimeStampTZ.TimeZone表示为命名时区(因此也是数据库中的命名时区)。

为了一致性我想使用由.NET(IE使用TimeZoneInfo.Local)确定的时区。

问题是TimeZoneInfo似乎没有包含与oracle时区名称匹配的时区名称。另外,OracleTimeStampTZ.TimeZone属性是只读的。

任何人都知道一个很好的实现方式吗?

在此先感谢

==编辑解释我对DST ==担忧

OK,就是我担心的是以下几点: 说我现在保存日期在数据库中的事件发生在从现在开始的一年半(无论如何都是夏时制的另一侧)。

说我保存的日期/时间是16:00 +13。当我们到达夏时制的另一边时,我国的偏移量可能是+12,这意味着在我当地的时区中,我先前保存的日期被认为是15:00,因为我的偏移量已更改,但已存储的日期没有。

根据我的理解,如果存储了指定的时区,那么当我们在夏令时的另一侧评估日期时,我们可以根据是否为夏令时确定正确的偏移量。

我描述的正确吗?

+0

当然,如果我可以使默认的DateTime转换为OracleTimeStampTZ,并使用指定的时区,我也会很高兴。 – tobyc 2009-02-25 04:04:50

回答

0

我在想你可能是好的。你能为你担心的问题画一个用例吗? IIRC,甲骨文是知道夏时制的,并且(自从日期被存储以来)我不确定你会如何失去信息 - 你会知道夏时制是否有效,对吗?

- MarkusQ

所以我想尝试是节省这样的日期和看到的偏移它的第一件事。换句话说,用于时区的数字偏移量可能(正确)是日期的函数。

我想另一种选择是,如果这不起作用,将保存在枚举列中的时区名称,并根据需要重建时间。不漂亮,但...

+0

我编辑了我的问题来详细阐述一点。 – tobyc 2009-02-25 20:19:20

相关问题