【问题标题】:Time zone list issue时区列表问题
【发布时间】:2009-08-11 04:51:14
【问题描述】:

对于我的应用程序,我从谷歌日历导入日历事件。我面临的唯一问题是时区列表。我从谷歌日历xml中获取时区作为输出,我必须检查时区列表并相应地添加时间......所以我可以从哪里得到这个标准时区列表..或其他一些替代方法来实现同样的效果.

【问题讨论】:

    标签: time erlang timezone


    【解决方案1】:

    如果您使用 Java,请使用 Joda Time - Google 日历提供的时区 ID 将是 Joda Time 可以理解的时区 ID。标准的TimeZone 类也可以很好理解,但我认为 Joda 更有可能。

    假设您看到了与事件相关的所有 VTIMEZONE 内容,您可以忽略详细信息 - 只需使用 ID。

    很遗憾,有些时区 ID 会随着时间的推移而发生变化 - 我暂时记不起任何示例,但如果为您提供“旧”名称,您可能需要进行一些翻译。

    如果您使用的是 .NET,那么您确实需要使用 .NET 3.5 和 TimeZoneInfo 类。不幸的是,它使用 Windows 名称而不是 Olson ID,但在某处有一个可用的翻译列表(如果你愿意,我可以挖掘出来)。

    如果你不使用这些平台中的任何一个,你基本上需要找到一个支持Olson Zoneinfo names 的库。 (那篇维基百科文章底部有一些有用的链接。)

    我肯定会尝试找到一个能够根据 ID 为您提供相关信息的库,而不是使用日历条目中给出的规则。时区随时间而变化,zoneinfo 数据库包含历史和未来信息,但无法在日历条目中轻松编码。

    【讨论】:

    • 在问题中这样说会很有帮助。好吧,我对 Erlang 一无所知 - 但必须有一些不错的日期/时间库,我想他们会理解 Olson ID。
    • 我不怪乔恩,你的投篮覆盖率达到 90% 或更高,但 Erlang 的投篮命中率约为 100-1……查理·马丁兑现了远投大票。 :)
    【解决方案2】:

    这里有一些关于使用 Erlang 日期/时间库的好文章: http://www.trapexit.org/Category:DateTimeRecipes
    希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      看看这些功能

      calendar:datetime_to_gregorian_seconds({Date, Time})
      calendar:gregorian_seconds_to_datetime(Seconds) -> {Date, Time}
      

      转换为“公历秒”并更正时区偏移并转换回日期形式是解决方案的一半。

      在 Erlang/OTP 中没有访问时区数据文件的库,据我所知,也没有第三方库可以访问它。因此,您的选择是自己将可用的时区数据库转换为 Erlang 可用的数据库,或者只了解其中的几个。

      你知道,除非你想启动一个项目来读取 Erlang 中的时区数据。 :-)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-25
        • 2013-09-16
        • 2016-09-12
        • 2020-07-11
        相关资源
        最近更新 更多