我正在开发一个存储会议开始和结束日期的应用程序。直到现在,我在比利时发展,我的服务器在法国,所以一切都在同一时区,没有问题。但今天,我在旧金山,我的服务器在法国,我注意到我有一个错误。我自动调整日期显示根据客户端本地时区,这是我今天的GMT-8。我的服务器运行在法国(GMT + 1)的Hibernate和MySQL。当我使用phpMyAdmin查看数据库时,发现日期设置为“2010-06-07 00:00:01”,但在我的Flex客户端中显示“2010-06-06 15:00:01”。遗失日期和时区
最终,我想要的是日期显示在事件的当地时区,这是我设置的日期。因此,当我在比利时时,我将事件的开始日期设置为“2010年 - 06-07 00:00:01“我想以这种方式检索它
但是我失去了什么层适应什么。时区存储在DATETIME MySQL列中(我在MySQL中看不到它)?在将它传递给具有时区信息的java.lang.Date时,Hibernate是否支持它?最终,解决这个混乱的最好办法是什么?
这对我来说并不明确:“如果我想要的是日期显示在事件的本地时区中,这是我设置的日期。”谁是“我”?用户 ?会议发生在一个固定的已知时区,或取决于会议的位置(由用户设置?) – leonbloy 2010-06-05 00:10:33
'java.util.Date'没有时区信息。这通常是格林威治时间(大纪元时间)。顺便说一句:时间部分似乎是在你的Flex应用程序无关,为什么你显示它? – BalusC 2010-06-05 00:13:25
我错过了什么吗?只有使用NOW()/ CURRENT_TIMESTAMP/etc来填充DATETIME时,此问题才会存在。如果用户提供日期和时间,应该写入数据库 - 时区不应生效。在不同时区提供基于时间的通知将是一个问题,但是...... – 2010-06-05 00:30:06