比较两个NSDates日,月和年整数

时间:2015-08-23 19:20:45

标签: ios swift

我试图比较两个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) .")

这给出了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())

这会给出不同的日期组件。

3)

if NSCalendar.currentCalendar().isDate(firstDate!, inSameDayAsDate: secondDate!){ 

4)

if NSCalendar.currentCalendar().isDateInToday(the NSDate) {

3和4都失败了。

我完全迷失了,有什么想法吗?

2 个答案:

答案 0 :(得分:10)

NSCalendar有一个方法isDate:equalToDate:toUnitGranularity:可以完全满足你的需要

date1date2是要比较的NSDate个实例,结果为Bool

let calendar = NSCalendar.currentCalendar()
calendar.timeZone = NSTimeZone(forSecondsFromGMT: 0)
let datesAreInTheSameDay = calendar.isDate(date1, equalToDate: date2, toUnitGranularity: .CalendarUnitDay | .CalendarUnitMonth | .CalendarUnitYear)

Swift 2:

let datesAreInTheSameDay = calendar.isDate(date1, equalToDate: date2, toUnitGranularity: [.Day, .Month, .Year])

斯威夫特3:

var calendar = Calendar.current
calendar.timeZone = TimeZone(secondsFromGMT: 0)!
let datesAreInTheSameDay = calendar.isDate(date1, equalTo: date2, toGranularity:.day)

答案 1 :(得分:0)

您可以使用此扩展程序:

#for test:
<?php $rows['lol'] = 'rofl';$name = 'lol'; $id="lol";$title = 'lol';?>

#code below works with PHP Version 5.4.39
<script>
var script_data= [
    {
<?php echo "title: '$rows[$title]' , \n";
  echo "content:' $rows[$name] <div class= \'stars\' data-id=\'".$rows[$id]."\' data-title= \'name \' ></div>'"; ?>

    }
];

像:

extension NSDate {

    func isEqualToDate2(dateToCompare : NSDate) -> Bool {
        //Declare Variables
        var isEqualTo = false

        //Compare Values
        if self.compare(dateToCompare) == NSComparisonResult.OrderedSame {
            isEqualTo = true
        }

        //Return Result
        return isEqualTo
    }

}