0
所以我想比较从我的数据库(字符串,我转换为NSdates)与当前日期一堆日期。比较两个NSDates带来的误报
当我运行代码示例日期的代码:2016-07-17 12:28:51 +0000
它返回前一天(昨天)的误报。
控制台输出:
Optional(2016-07-15 22:00:00 +0000)
DAY IN THE PAST
Optional(2016-07-15 22:00:00 +0000)
DAY IN THE PAST
Optional(2016-07-16 22:00:00 +0000)
SAME DAY
Optional(2016-07-16 22:00:00 +0000)
SAME DAY
Optional(2016-07-16 22:00:00 +0000)
SAME DAY
我不知道我在做什么错在这里。代码:
let dateToday = NSDate() // example: 2016-07-17 12:28:51 +0000
print(dateToday)
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let openDB = realm.objects(Article)
for item in openDB {
let getItem = item.toDate
let date = dateFormatter.dateFromString(getItem!)
let order = NSCalendar.currentCalendar().compareDate(dateToday, toDate: date!,
toUnitGranularity: .Day)
print(date) //example 2016-07-17 22:00:00 +0000
switch order {
case .OrderedDescending:
print("DAY IN THE PAST")
case .OrderedAscending:
print("FUTURE DATE")
case .OrderedSame:
print("SAME DAY")
}
请注意,我只需要检查的日期本身,我不计较时间(小时,分钟)。
不知道这是否重要,但我只是添加此信息:一般来说,我将我的设备的日期更改为第17次以进行测试。也许这会导致代码的一些问题? – SoundShock
你在格林威治标准时间+2时区?然后'2016-07-16 22:00:00 + 0000'根据您所在的时区和指定日期的同一天为'2016-07-17 00:00:00 + 0200'。 –
@MartinR我认为自夏天以后,我确实在GMT +02:00时间(比利时)。所以我的代码忽略小时和分钟无关紧要?因为22,而我的2+ GMT则改变了日期? 如何手动修复它?我从未在我的代码中添加22:00:00,它似乎发生在转换为dateFormatter.dateFormat =“yyyy-MM-dd” – SoundShock