From 79815072718997afb9a08b32de0385463467d8f6 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 22 Mar 2011 21:22:34 +0000 Subject: [PATCH] Monotone-Parent: d13851bad5ecc6757d6a051998c7fd6722526ba9 Monotone-Revision: 8c4a5e6241dde8edac2d02e1b2dda9528b69ddb6 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-03-22T21:22:34 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 5 +++++ OpenChange/NSCalendarDate+MAPIStore.h | 3 ++- OpenChange/NSCalendarDate+MAPIStore.m | 28 +++++++++++++++++++-------- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 355c20228..c56ee31c7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2011-03-22 Wolfgang Sourdeau + + * OpenChange/NSCalendarDate+MAPIStore.m (-asMinutesSince1601): + corollary to +dateFromMinutesSince1601. + 2011-03-20 Wolfgang Sourdeau * OpenChange/MAPIStoreCalendarMessage.m diff --git a/OpenChange/NSCalendarDate+MAPIStore.h b/OpenChange/NSCalendarDate+MAPIStore.h index ac9ad263f..cdbb0effb 100644 --- a/OpenChange/NSCalendarDate+MAPIStore.h +++ b/OpenChange/NSCalendarDate+MAPIStore.h @@ -27,9 +27,10 @@ @interface NSCalendarDate (MAPIStoreDataTypes) -+ (id) dateFromFileTime: (const struct FILETIME *) timeValue; + (id) dateFromMinutesSince1601: (uint32_t) minutes; +- (uint32_t) asMinutesSince1601; ++ (id) dateFromFileTime: (const struct FILETIME *) timeValue; - (struct FILETIME *) asFileTimeInMemCtx: (void *) memCtx; @end diff --git a/OpenChange/NSCalendarDate+MAPIStore.m b/OpenChange/NSCalendarDate+MAPIStore.m index c9b847fdb..c6b747b73 100644 --- a/OpenChange/NSCalendarDate+MAPIStore.m +++ b/OpenChange/NSCalendarDate+MAPIStore.m @@ -35,15 +35,12 @@ static NSCalendarDate *refDate = nil; @implementation NSCalendarDate (MAPIStoreDataTypes) static void -_setupRefDate() +_setupRefDate () { - NSTimeZone *utc; - - utc = [NSTimeZone timeZoneWithName: @"UTC"]; - refDate = [NSCalendarDate dateWithYear: 1601 month: 1 day: 1 - hour: 0 minute: 0 second: 0 - timeZone: utc]; - [refDate retain]; + refDate = [[NSCalendarDate alloc] + initWithYear: 1601 month: 1 day: 1 + hour: 0 minute: 0 second: 0 + timeZone: [NSTimeZone timeZoneWithName: @"UTC"]]; } + (id) dateFromMinutesSince1601: (uint32_t) minutes @@ -59,6 +56,21 @@ _setupRefDate() return result; } +- (uint32_t) asMinutesSince1601 +{ + uint32_t minutes; + NSInteger offset; + + if (!refDate) + _setupRefDate (); + + minutes = (uint32_t) ([self timeIntervalSinceDate: refDate] / 60); + offset = [[self timeZone] secondsFromGMT]; + minutes += (offset / 60); + + return minutes; +} + + (id) dateFromFileTime: (const struct FILETIME *) timeValue { NSCalendarDate *result;