相当于OSX中的msdn TIME_ZONE_INFORMATION结构

时间:2016-02-25 09:21:53

标签: c macos cocoa timezone nstimezone

我正在研究OS X客户端,它假设向远程服务器发送消息以及有关客户端当前时区的数据。但是,服务器被编程为根据此处定义的以下结构仅处理Windows时区格式here

typedef struct _TIME_ZONE_INFORMATION {
    LONG       Bias;
    WCHAR      StandardName[32];
    SYSTEMTIME StandardDate;
    LONG       StandardBias;
    WCHAR      DaylightName[32];
    SYSTEMTIME DaylightDate;
    LONG       DaylightBias;
 } TIME_ZONE_INFORMATION, *PTIME_ZONE_INFORMATION;

我设法在OS X框架中找到了一些所需的信息,例如NSTimeZone,但只包含部分列表。

也许在OS X中有一个类似的结构可以由一些Cocoa模块生成?

NSTimeZone* localTimeZone = [NSTimeZone localTimeZone];
string(localTimeZone.name.UTF8String);
localTimeZone.daylightSavingTimeOffset;

1 个答案:

答案 0 :(得分:1)

您拥有NStimeZone课程中的所有信息。您需要弄清楚的第一件事是,时区目前是否遵守夏令时,您可以通过isDaylightSavingTime属性执行此操作。然后根据这些信息,你必须找出它观察夏令时的日期以及它没有的地方,nextDaylightSavingTimeTransition属性将帮助你(加上目前是日光的信息)节约时间)。除此之外,您可以使用abbreviationForDate:方法获取时区的名称,一次用于DST,一次用于不用。同样,您可以通过secondsFromGMTForDate:计算两个日期和一些数学的偏差。最后,您必须使用NSCalendar为您获取NSDateComponents个对象,您可以使用这两个日期填充SYSTEMTIME结构成员。当然,有些时区没有观察夏令时,你必须考虑到这些情况。

相关问题