【问题标题】:How to convert "9:00 PM EST" to a Date object如何将“9:00 PM EST”转换为 Date 对象
【发布时间】: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


【解决方案1】:

使用 SimpleDateFormat 格式为“K:mm a vvv”。 parse 函数将返回日期对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    相关资源
    最近更新 更多