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