【发布时间】:2011-02-04 15:58:32
【问题描述】:
我正在开发一个 Android 应用程序,需要一些基本的日期时间操作。我有一个包含特定日期的 Date 对象(来自 Java.util.Date)。我需要添加一个特定的时间。我的时间是这样格式的字符串:“9:00 PM EST”
我如何将这次“添加”到上一个日期?如果 Date 对象当前有:“4/24/10 00:00:00”
如何将其改为:“4/24/10 09:00:00 EST”
如果可能的话,我更愿意在不使用外部库的情况下执行此操作。
【问题讨论】:
-
您意识到图书馆之所以存在,是因为当地法律(经常变化)造成的日期非常复杂(日期在一半的时候被讨论过msmvps.com/blogs/jon_skeet/archive/2009/11/02/…)。
-
Android 有 java.util.DateFormat 吗?
-
@R0MANARMY:我知道它们很复杂,因此我寻求帮助。如果不使用库就绝对不可能做我想做的事,那么我会研究库。 @Thilo:是的,它确实有 java.util.DateFormat。
-
@Bara:这并非不可能,但是如果您阅读 Jon Skeet 的帖子,您就会明白为什么它很复杂且容易出错。如果您为完全供个人使用的应用程序执行此操作,那么这没什么大不了的。如果这是你计划推销的东西,它会变得更加复杂。例如,[某个日期] + 9 小时可能是上午 8 点、上午 9 点或上午 10 点,具体取决于地理位置和年份(还记得美国夏令时是如何被推后两周的吗?)。这就是为什么最好使用将(希望)更新以应对此类变化的库。
-
@Bara:我知道的每个日期实现(当然,不是很多)都存储为与给定时间点的偏移量。在 .NET(我使用的)中,起始点是 0001 年 1 月 1 日午夜。例如,今晚的午夜是 634061952000000000。要获得今天上午 9 点的偏移量,您必须添加 [某个数字]到 634061952000000000。根据年份、地理位置和日期,[some number] 会有所不同。有时它代表 10 个小时,有时代表 9 个小时,有时代表 8 个小时。这就是日期数学复杂的原因以及使用库更好的原因。
标签: java android date time timezone