我想比较两个NSDates的“day”组件。其中一个日期是从包含波斯日历格式的日期的JSON文件导入的。另一个是设备默认的NSDate()。
两个日期都指向同一天,但其中一个返回与另一个不同的日期组件。当我记录日期组件时,它们是不同的。
let cal2 = Calendar(identifier: .persian)
if cal2.dateComponents([.day,.month,.year], from: day as Date) == cal2.dateComponents([.day,.month,.year], from: date as Date)
{
t = true
}
其中一个日期是:1395-07-20(波斯日历),另一个是2016-10-11。这两个日期都是相同的,并指向同一天。
答案 0 :(得分:2)
在这种情况下,你的控制台应该有'true':
//create 2 Date (from Persian calendar and from Gregorian calendar) that point to same day.
let componentPersian = NSDateComponents()
componentPersian.day = 20
componentPersian.month = 07
componentPersian.year = 1395
let date1 = persianCalendar?.dateFromComponents(componentPersian)
let componentGregorian = NSDateComponents()
componentGregorian.day = 11
componentGregorian.month = 10
componentGregorian.year = 2016
let date2 = gregorian?.dateFromComponents(componentGregorian)
//get NSDateComponents of those 2 Date, USING SAME CALENDAR. I use Gregorian in my test.
let components1 = gregorian?.components([.Day, .Month, .Year], fromDate: date1!)
let components2 = gregorian?.components([.Day, .Month, .Year], fromDate: date2!)
//and compare the values.
if (components1?.day == components2?.day
&& components1?.month == components2?.month
&& components1?.year == components2?.year
) {
NSLog("true") //you must see this log in the console.
} else {
NSLog("false")
}
答案 1 :(得分:0)
您可以使用DateFormatter
(请参阅DateFormatter)将Date
值转换为相同的日历格式。之后,你可以比较它们。