static bool __CFLocaleCopyCalendar(CFLocaleRef locale, bool user, CFTypeRef *cf, CFStringRef context) { if (__CFLocaleCopyCalendarID(locale, user, cf, context)) { CFCalendarRef calendar = CFCalendarCreateWithIdentifier(kCFAllocatorSystemDefault, (CFStringRef)*cf); CFCalendarSetLocale(calendar, locale); CFRelease(*cf); *cf = calendar; return true; } return false; }
CFCalendarRef CFCalendarCopyCurrent(void) { CFLocaleRef locale = CFLocaleCopyCurrent(); CFCalendarRef calID = (CFCalendarRef)CFLocaleGetValue(locale, kCFLocaleCalendarIdentifier); if (calID) { CFCalendarRef calendar = CFCalendarCreateWithIdentifier(kCFAllocatorSystemDefault, (CFStringRef)calID); CFCalendarSetLocale(calendar, locale); CFRelease(locale); return calendar; } return NULL; }