相当于 OSX 中的 msdn TIME_ZONE_INFORMATION 结构
equivalent to msdn TIME_ZONE_INFORMATION struct in OSX
我正在开发 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;
您在 NStimeZone
class 中拥有所有这些信息。您需要弄清楚的第一件事是该时区当前是否遵守夏令时,您可以通过 isDaylightSavingTime
属性 执行此操作。然后,根据这些信息,您必须找出它遵守夏令时和不遵守夏令时的日期,nextDaylightSavingTimeTransition
属性 将在这方面帮助您(加上当前是否是白天的信息节约时间)。这样一来,您就可以使用 abbreviationForDate:
方法获取时区的名称,一次用于夏令时,一次用于不使用时区。同样,您可以通过 secondsFromGMTForDate:
计算两个日期和一些数学的偏差。最后,您必须使用 NSCalendar
为您的两个日期获取一个 NSDateComponents
对象,您可以用它来填充 SYSTEMTIME
结构成员。当然,有些时区不遵守 DST,您必须考虑这些情况。
我正在开发 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;
您在 NStimeZone
class 中拥有所有这些信息。您需要弄清楚的第一件事是该时区当前是否遵守夏令时,您可以通过 isDaylightSavingTime
属性 执行此操作。然后,根据这些信息,您必须找出它遵守夏令时和不遵守夏令时的日期,nextDaylightSavingTimeTransition
属性 将在这方面帮助您(加上当前是否是白天的信息节约时间)。这样一来,您就可以使用 abbreviationForDate:
方法获取时区的名称,一次用于夏令时,一次用于不使用时区。同样,您可以通过 secondsFromGMTForDate:
计算两个日期和一些数学的偏差。最后,您必须使用 NSCalendar
为您的两个日期获取一个 NSDateComponents
对象,您可以用它来填充 SYSTEMTIME
结构成员。当然,有些时区不遵守 DST,您必须考虑这些情况。