我试图比较两个NSDates,以了解它们是否在同一天.这是两个日期(第二个日期始终是当前日期,NSDate()):
2015-08-23 22:00:00 +0000 2015-08-23 19:13:45 +0000
很明显,日期是在同一天,因为23 = 23.但是我似乎无法在代码中建立这个.我试过了:
1)
let date = tripObject["tripDate"] as! NSDate
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let str = dateFormatter.stringFromDate(date)
let date2 = NSDate()
let dateFormatter2 = NSDateFormatter()
dateFormatter2.dateFormat = "yyyy-MM-dd"
let str2 = dateFormatter2.stringFromDate(date2)
println(". \(str) and \(str2) .")
Run Code Online (Sandbox Code Playgroud)
这给出了2015-08-24和2015-08-23
2)
let dateComponents = NSCalendar.currentCalendar().components(.CalendarUnitYear | .CalendarUnitMonth | .CalendarUnitDay, fromDate: tripObject["tripDate"] as! NSDate)
let dateComponents2 = NSCalendar.currentCalendar().components(.CalendarUnitYear | .CalendarUnitMonth | .CalendarUnitDay, fromDate: NSDate())
Run Code Online (Sandbox Code Playgroud)
这给出了不同的日期组件.
3)
if NSCalendar.currentCalendar().isDate(firstDate!, inSameDayAsDate: secondDate!){
Run Code Online (Sandbox Code Playgroud)
4)
if NSCalendar.currentCalendar().isDateInToday(the NSDate) {
Run Code Online (Sandbox Code Playgroud)
3和4都失败了.
我完全迷失了,有什么想法吗?
vad*_*ian 10
NSCalendar有一种方法isDate:equalToDate:toUnitGranularity:可以完全满足您的需求
date1并且date2是NSDate要比较的实例,结果是Bool
let calendar = NSCalendar.currentCalendar()
calendar.timeZone = NSTimeZone(forSecondsFromGMT: 0)
let datesAreInTheSameDay = calendar.isDate(date1, equalToDate: date2, toUnitGranularity: .CalendarUnitDay | .CalendarUnitMonth | .CalendarUnitYear)
Run Code Online (Sandbox Code Playgroud)
斯威夫特2:
let datesAreInTheSameDay = calendar.isDate(date1, equalToDate: date2, toUnitGranularity: [.Day, .Month, .Year])
Run Code Online (Sandbox Code Playgroud)
斯威夫特3:
var calendar = Calendar.current
calendar.timeZone = TimeZone(secondsFromGMT: 0)!
let datesAreInTheSameDay = calendar.isDate(date1, equalTo: date2, toGranularity:.day)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3248 次 |
| 最近记录: |