diff --git a/CoreFoundation/Locale.subproj/CFCalendar.c b/CoreFoundation/Locale.subproj/CFCalendar.c index d2f13c8642..150a00af3e 100644 --- a/CoreFoundation/Locale.subproj/CFCalendar.c +++ b/CoreFoundation/Locale.subproj/CFCalendar.c @@ -273,6 +273,7 @@ CFCalendarRef CFCalendarCreateWithIdentifier(CFAllocatorRef allocator, CFStringR else if (CFEqual(kCFIslamicCalendar, identifier)) identifier = kCFIslamicCalendar; else if (CFEqual(kCFIslamicCivilCalendar, identifier)) identifier = kCFIslamicCivilCalendar; else if (CFEqual(kCFHebrewCalendar, identifier)) identifier = kCFHebrewCalendar; + else if (CFEqual(kCFPersianCalendar, identifier)) identifier = kCFPersianCalendar; else if (CFEqual(kCFISO8601Calendar, identifier)) identifier = kCFISO8601Calendar; // else if (CFEqual(kCFChineseCalendar, identifier)) identifier = kCFChineseCalendar; else return NULL; diff --git a/TestFoundation/TestCalendar.swift b/TestFoundation/TestCalendar.swift index f4d45bf878..5349a57853 100644 --- a/TestFoundation/TestCalendar.swift +++ b/TestFoundation/TestCalendar.swift @@ -16,6 +16,8 @@ class TestCalendar: XCTestCase { ("test_gettingDatesOnHebrewCalendar", test_gettingDatesOnHebrewCalendar ), ("test_gettingDatesOnChineseCalendar", test_gettingDatesOnChineseCalendar), ("test_gettingDatesOnISO8601Calendar", test_gettingDatesOnISO8601Calendar), + ("test_gettingDatesOnPersianCalendar", + test_gettingDatesOnPersianCalendar), ("test_copy",test_copy), ("test_addingDates", test_addingDates), ("test_datesNotOnWeekend", test_datesNotOnWeekend), @@ -117,6 +119,18 @@ class TestCalendar: XCTestCase { XCTAssertEqual(components.isLeapMonth, true) } + func test_gettingDatesOnPersianCalendar() { + let date = Date(timeIntervalSince1970: 1539146705) + + var calendar = Calendar(identifier: .persian) + calendar.timeZone = TimeZone(identifier: "UTC")! + let components = calendar.dateComponents([.year, .month, .day], from: date) + XCTAssertEqual(components.year, 1397) + XCTAssertEqual(components.month, 7) + XCTAssertEqual(components.day, 18) + + } + func test_ampmSymbols() { let calendar = Calendar(identifier: .gregorian) XCTAssertEqual(calendar.amSymbol, "AM")