【问题标题】:Parse Rails timezone to_s on the JVM在 JVM 上解析 Rails 时区 to_s
【发布时间】:2013-01-30 16:07:45
【问题描述】:

我正在为 Shopify 编写基于 JVM 的客户端,并且需要从 API 获取时区信息。返回的数据格式为:

"(GMT-05:00) Eastern Time (US & Canada)"

这实际上并没有描述时区。时区的标准格式通常为:

"America/New_York"

并被描述为here。我正在使用Joda-time 来管理 JVM 端的时区,并且需要解析该字符串。我现在能做的最好的是将documentation 中的列表复制到我的代码中,从字符串中去除偏移量并进行查找。我的问题是该列表看起来相当不完整,并且可能会发生变化。

我拒绝使用 GMT-05:00 部分,因为它没有考虑 DST,因此没有描述时区,所以一年中的 6 个月都是错误的,这是不可接受的。

或者,Shopify API 刚刚提供时区会很有用,但我搜索了 docs 并看不到它在哪里。如果有人能看到它而我只是愚蠢,那就太好了。

附:我不是红宝石程序员,所以我完全有可能遗漏了一些非常明显的东西。谢谢。

【问题讨论】:

    标签: java ruby-on-rails shopify


    【解决方案1】:

    我之前也遇到过同样的问题,但我能够将 Java 兼容时区标识符的副本与 Ruby/Rails 标识符一起保留。您可能需要建立一个转换表来将“东部时间(美国和加拿大)”转换为“美国/纽约”。

    【讨论】:

    • 是的,我已经做到了。我试图避免维护那个庞大的查找表。嗯嗯。
    • @l0st3d 我不知道您解决方案的架构,但您可以使用 ruby​​ 来转换时区,而不是弄乱 jRuby 或转换表。
    • true,这是另一种选择。我已经去维护我自己的映射,因为它最适合我的限制。如果人们坚持这类事情的标准,那就太好了;P
    【解决方案2】:

    我有类似的产品。在 Android 端,我使用TimeZone.getDefault().getId()。它通常已经在您要求的 TZ 数据库表单中。在 ruby​​ 方面,我发现 timezone gem 对于调度非常宝贵,尽管我不得不稍微修改 gem 以满足我的性能需求。

    【讨论】:

    • 我认为您误解了我的问题。我知道如何将“America/New_York”变成时区。如果不在我的应用程序中运行 JRuby 实例或维护我自己的映射列表,我不知道如何将“(GMT-05:00) 东部时间(美国和加拿大)”转换为时区。
    • 我的意思是,我提供的 API 应该始终以您想要的格式为您提供时区信息。但是,我错过了这是一个 Android API,而您的目标是 JVM。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 2012-04-28
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2011-12-03
    相关资源
    最近更新 更多