libical似乎只接受Olsen城市的名称来查找其数据库中的时区。我所得到的是一个可移植的结构,它有一个GMT偏移量和3-4个字母的简写代码(EST/EDT等),但是在libical中没有接受它的功能。
我有一个非常糟糕的方法,我扫描Z列表从利比试图匹配Z名称,这可能会奏效,但我很清楚,这是一个不好的想法。但是,我还没有找到任何其他的方法来将本地时区变成一个libical timezone。
我错过了一些简单的东西吗?
我说的便携式操作系统是指windows、osx和linux。
这是我正在编写的c程序。但我现在看到,z偏移不是posix,所以这是行不通的。
发布于 2016-05-03 13:33:04
所以我认为答案是没有答案的。反正也没什么便携的。
因此,我为linux和osx提供了单独的构建路径,而且我还没有进入windows。
linux实现只是从/etc/timezone读取(关于How do I find the current system timezone?的更多信息)
osx的实现就是这样做的。
CFTimeZoneRef tzlocal = CFTimeZoneCopyDefault();
CFStringRef me = CFTimeZoneGetName(tzlocal);
NSString *local = (__bridge NSString *)me;
const char *tzname = [local cStringUsingEncoding:NSUTF8StringEncoding];
log.debug("Looking up timezone for %s", tzname);
// this is a built-in timezone so we don't have to free it.
local_timezone = icaltimezone_get_builtin_timezone(tzname);不是便携式的,但至少是正确的。
https://stackoverflow.com/questions/36948149
复制相似问题