1/* 2 * Copyright (c) 2014 Apple Inc. All rights reserved. 3 * 4 * @APPLE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. Please obtain a copy of the License at 10 * http://www.opensource.apple.com/apsl/ and read it before using this 11 * file. 12 * 13 * The Original Code and all software distributed under the License are 14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 18 * Please see the License for the specific language governing rights and 19 * limitations under the License. 20 * 21 * @APPLE_LICENSE_HEADER_END@ 22 */ 23 24/* CFDate.h 25 Copyright (c) 1998-2013, Apple Inc. All rights reserved. 26*/ 27 28#if !defined(__COREFOUNDATION_CFDATE__) 29#define __COREFOUNDATION_CFDATE__ 1 30 31#include <CoreFoundation/CFBase.h> 32 33CF_IMPLICIT_BRIDGING_ENABLED 34CF_EXTERN_C_BEGIN 35 36typedef double CFTimeInterval; 37typedef CFTimeInterval CFAbsoluteTime; 38/* absolute time is the time interval since the reference date */ 39/* the reference date (epoch) is 00:00:00 1 January 2001. */ 40 41CF_EXPORT 42CFAbsoluteTime CFAbsoluteTimeGetCurrent(void); 43 44CF_EXPORT 45const CFTimeInterval kCFAbsoluteTimeIntervalSince1970; 46CF_EXPORT 47const CFTimeInterval kCFAbsoluteTimeIntervalSince1904; 48 49typedef const struct __CFDate * CFDateRef; 50 51CF_EXPORT 52CFTypeID CFDateGetTypeID(void); 53 54CF_EXPORT 55CFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at); 56 57CF_EXPORT 58CFAbsoluteTime CFDateGetAbsoluteTime(CFDateRef theDate); 59 60CF_EXPORT 61CFTimeInterval CFDateGetTimeIntervalSinceDate(CFDateRef theDate, CFDateRef otherDate); 62 63CF_EXPORT 64CFComparisonResult CFDateCompare(CFDateRef theDate, CFDateRef otherDate, void *context); 65 66CF_IMPLICIT_BRIDGING_DISABLED 67 68typedef const struct __CFTimeZone * CFTimeZoneRef; 69 70 71#if !defined(CF_CALENDAR_ENUM_DEPRECATED) 72#if NS_ENABLE_CALENDAR_DEPRECATIONS 73#define CF_CALENDAR_ENUM_DEPRECATED(A, B, C, D, ...) CF_ENUM_DEPRECATED(A, B, C, D, __VA_ARGS__) 74#define CF_CALENDAR_DEPRECATED(A, B, C, D, ...) CF_DEPRECATED(A, B, C, D, __VA_ARGS__) 75#else 76#define CF_CALENDAR_ENUM_DEPRECATED(A, B, C, D, ...) CF_ENUM_AVAILABLE(A, C) 77#define CF_CALENDAR_DEPRECATED(A, B, C, D, ...) CF_AVAILABLE(A, C) 78#endif 79#endif 80 81typedef struct { 82 SInt32 year; 83 SInt8 month; 84 SInt8 day; 85 SInt8 hour; 86 SInt8 minute; 87 double second; 88} CFGregorianDate CF_CALENDAR_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead"); 89 90typedef struct { 91 SInt32 years; 92 SInt32 months; 93 SInt32 days; 94 SInt32 hours; 95 SInt32 minutes; 96 double seconds; 97} CFGregorianUnits CF_CALENDAR_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead"); 98 99typedef CF_OPTIONS(CFOptionFlags, CFGregorianUnitFlags) { 100 kCFGregorianUnitsYears CF_CALENDAR_ENUM_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead") = (1UL << 0), 101 kCFGregorianUnitsMonths CF_CALENDAR_ENUM_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead") = (1UL << 1), 102 kCFGregorianUnitsDays CF_CALENDAR_ENUM_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead") = (1UL << 2), 103 kCFGregorianUnitsHours CF_CALENDAR_ENUM_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead") = (1UL << 3), 104 kCFGregorianUnitsMinutes CF_CALENDAR_ENUM_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead") = (1UL << 4), 105 kCFGregorianUnitsSeconds CF_CALENDAR_ENUM_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead") = (1UL << 5), 106 kCFGregorianAllUnits CF_CALENDAR_ENUM_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead") = 0x00FFFFFF 107}; 108 109CF_EXPORT 110Boolean CFGregorianDateIsValid(CFGregorianDate gdate, CFOptionFlags unitFlags) CF_CALENDAR_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead"); 111 112CF_EXPORT 113CFAbsoluteTime CFGregorianDateGetAbsoluteTime(CFGregorianDate gdate, CFTimeZoneRef tz) CF_CALENDAR_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead"); 114 115CF_EXPORT 116CFGregorianDate CFAbsoluteTimeGetGregorianDate(CFAbsoluteTime at, CFTimeZoneRef tz) CF_CALENDAR_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead"); 117 118CF_EXPORT 119CFAbsoluteTime CFAbsoluteTimeAddGregorianUnits(CFAbsoluteTime at, CFTimeZoneRef tz, CFGregorianUnits units) CF_CALENDAR_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead"); 120 121CF_EXPORT 122CFGregorianUnits CFAbsoluteTimeGetDifferenceAsGregorianUnits(CFAbsoluteTime at1, CFAbsoluteTime at2, CFTimeZoneRef tz, CFOptionFlags unitFlags) CF_CALENDAR_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead"); 123 124CF_EXPORT 125SInt32 CFAbsoluteTimeGetDayOfWeek(CFAbsoluteTime at, CFTimeZoneRef tz) CF_CALENDAR_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead"); 126 127CF_EXPORT 128SInt32 CFAbsoluteTimeGetDayOfYear(CFAbsoluteTime at, CFTimeZoneRef tz) CF_CALENDAR_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead"); 129 130CF_EXPORT 131SInt32 CFAbsoluteTimeGetWeekOfYear(CFAbsoluteTime at, CFTimeZoneRef tz) CF_CALENDAR_DEPRECATED(10_4, 10_9, 2_0, 7_0, "Use CFCalendar or NSCalendar API instead"); 132 133CF_EXTERN_C_END 134 135#endif /* ! __COREFOUNDATION_CFDATE__ */ 136 137