【发布时间】:2016-04-29 22:04:27
【问题描述】:
libical 似乎只接受奥尔森城市名称来在其数据库中查找时区。 我所拥有的可移植的是一个 struct tm,它具有 GMT 偏移量和 3-4 个简写字母代码(EST/EDT 等),但在 libical 中没有接受它的函数。
我有一个非常糟糕的方法,我从 libical 扫描 tz 列表,试图匹配 tznames,这可能会起作用,但我很清楚这是一个坏主意。但我还没有找到任何其他方法将本地时区转换为 libical icaltimetype。
我错过了一些简单的东西吗?
我所说的便携是指 windows、osx 和 linux。
这是我正在编写的一个 c 程序。 但我现在看到 tz 偏移量不是 posix,所以不会这样做。
【问题讨论】:
-
我的确实如此:gnu.org/software/libc/manual/html_node/… 但你说得对,这与平台无关。
-
我知道匹配缩写是一个坏主意,但我想得到一些可以测试的东西,所以我现在就去做。这就是我问这个问题的原因。
-
好的,所以我在看what little docs there are for libical,在5.3.1中它描述了
icaltimetype,它只有is_utc来区分本地时间和UTC时间,没有其他时间了此结构中的区域信息,因此我不明白您希望如何将本地时区转换为icaltimetype的问题。也许您只想加载本地 时间,而不是区域?如果是这样,我认为您可以使用同一文档的 5.3.2 中的功能之一,例如icaltime_from_timet。 -
icaltimetype 有一个常量 icaltimezone *zone;在里面。您可以在调用 icaltime_from_timet_with_zone 时创建 icaltimetype 时设置它