【问题标题】:Date add GMT to hour日期将 GMT 添加到小时
【发布时间】:2019-08-31 15:01:48
【问题描述】:
val startHour = SimpleDateFormat("HH:mm").format(pickup.begin())

pickup.begin 值为“Wed Apr 10 10:00:00 GMT+03:00 2019”,所以我需要开始时间为 10:00 +3h -> 13: 00,但我得到的 startHour 值为 10:00。

我不知道如何将 GMT 值添加到小时。

【问题讨论】:

  • pickup 的类型是什么?
  • 对不起,pickup.begin() * 返回的类型是什么?
  • final @Nullable Object begin; /** * The datetime the range begins. */ public @Nullable Object begin() { return this.begin; } 。它来自生成的类
  • 您需要将其转换为您的当地时间
  • 顺便考虑扔掉长期过时且臭名昭著的麻烦SimpleDateFormat和朋友,并将ThreeTenABP添加到您的Android项目中,以便使用java.time,现代Java日期和时间API .使用起来感觉好多了。

标签: android date kotlin gmt localdate


【解决方案1】:

不,你误会了。 Wed Apr 10 10:00:00 GMT+03:00 2019java.util.Date 的(文本表示形式),其值等于 2019-04-10T07:00 UTC。您的默认时区似乎是 GMT+03:00,Date 试图对您友好并打印该时区的时间,这就是它打印 10:00:00 的原因。无论您想要 UTC 时间还是您自己的默认时区,13:00 肯定是不正确的。

pickup.begin() 返回的Date 类设计不佳且早已过时,因此您可能需要考虑是否可以返回来自现代Java 日期和时间API 的java.time 的类型。它也可能使事情变得更清楚。

或者,将 java.util.Date 对象转换为其现代对应对象 java.time.Instant。寻找添加到旧类的新转换方法。

Instant instant = pickup.begin().toInstant() ;  // Converting legacy `Date` object to modern `Instant` object. 

搜索 Stack Overflow 并阅读 Oracle Tutorial 以了解有关 InstantOffsetDateTimeZonedDateTime 类的更多信息。

如果您将 ThreeTenABP 添加到您的 Android 项目,您可以在较旧的 Android 版本上使用 java.time。是java.time backport的Android适配。

链接

【讨论】:

    【解决方案2】:

    尝试将区域设置添加到您的简单日期格式中,以匹配 +3 时区。

    val startHour = SimpleDateFormat("HH:mm", Locale.Germany).format(pickup.begin())
    

    【讨论】:

    • 不会有任何区别。区域设置和时区是独立的概念。
    【解决方案3】:

    你可以试试这样的

    我在这里把“日期”作为字符串

      String date="something" 
     val sdf = SimpleDateFormat("HH:mm")
     sdf.timeZone = TimeZone.getTimeZone("UTC")
     val gmt = sdf.parse(date)
    

    如果这是你的情况

    Date date="somevalue"
    

    然后

    val gmt = sdf.format(date)

    gmt 将返回您的当地时间

    【讨论】:

    • 好吧,这添加了我的 GMT +2,而不是来自服务器的 GMT 响应 +3
    • 这些糟糕的日期时间类在几年前被现代 java.time 类所取代,并采用了 JSR 310。
    猜你喜欢
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多