C语言 相当于 OSX 中的 MSDN TIME_ZONE_INFORMATION 结构



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

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类中拥有所有这些信息。您需要弄清楚的第一件事是时区当前是否遵守夏令时,您可以通过 isDaylightSavingTime 属性执行此操作。然后,根据这些信息,您必须找出它遵守 DST 的日期和不遵守 DST 的日期,nextDaylightSavingTimeTransition属性将为您提供帮助(加上当前是否为夏令时的信息)。有了这个,您可以使用abbreviationForDate:方法获取时区的名称,一次用于 DST,一次用于非 DST。同样,您可以通过secondsFromGMTForDate:来计算日期和一些数学的偏差。最后,您必须使用 NSCalendar 来获取一个 NSDateComponents 对象,其中包含两个日期,您可以使用这两个日期填充SYSTEMTIME结构成员。当然,有些时区不遵守夏令时,您必须考虑这些情况。

相关内容

  • 没有找到相关文章

最新更新