我正在尝试实现dropBox同步,需要比较两个文件的日期 . 一个在我的dropBox帐户上,一个在我的iPhone上 .
我想出了以下内容,但我得到了意想不到的结果 . 在比较这两个日期时,我想我正在做一些根本错误的事情 . 我只是使用了> <运算符,但我想这并不好,因为我正在比较两个NSDate字符串 . 开始了:
NSLog(@"dB...lastModified: %@", dbObject.lastModifiedDate);
NSLog(@"iP...lastModified: %@", [self getDateOfLocalFile:@"NoteBook.txt"]);
if ([dbObject lastModifiedDate] < [self getDateOfLocalFile:@"NoteBook.txt"]) {
NSLog(@"...db is more up-to-date. Download in progress...");
[self DBdownload:@"NoteBook.txt"];
NSLog(@"Download complete.");
} else {
NSLog(@"...iP is more up-to-date. Upload in progress...");
[self DBupload:@"NoteBook.txt"];
NSLog(@"Upload complete.");
}
这给了我以下(随机和错误)输出:
2011-05-11 14:20:54.413 NotePage[6918:207] dB...lastModified: 2011-05-11 13:18:25 +0000
2011-05-11 14:20:54.414 NotePage[6918:207] iP...lastModified: 2011-05-11 13:20:48 +0000
2011-05-11 14:20:54.415 NotePage[6918:207] ...db is more up-to-date.
或者这个恰好是正确的:
2011-05-11 14:20:25.097 NotePage[6903:207] dB...lastModified: 2011-05-11 13:18:25 +0000
2011-05-11 14:20:25.098 NotePage[6903:207] iP...lastModified: 2011-05-11 13:19:45 +0000
2011-05-11 14:20:25.099 NotePage[6903:207] ...iP is more up-to-date.
13 回答
You can compare two date by this method also
我试过它希望它适合你
这将返回接收器和anotherDate的较早版本 . 如果两者相同,则返回接收器 .
在派对之后,另一种比较NSDate对象的简单方法是将它们转换为原始类型,以便于使用'>'''''=='等
例如 .
timeIntervalSinceReferenceDate
将日期转换为自参考日期(2001年1月1日,GMT)以来的秒数 . 当timeIntervalSinceReferenceDate
返回NSTimeInterval(这是一个double typedef)时,我们可以使用原始比较器 .你们为什么不使用这些
NSDate
比较方法:一些日期工具,包括比较IN ENGLISH,这很好:
实施:
你应该使用:
比较日期 . 目标C中没有运算符重载 .
NSDate
有比较功能 .compare:
返回NSComparisonResult
值,该值指示接收方的时间顺序和另一个给定日期 .Parameters :
anotherDate
比较接收器的日期 . 该值不得为零 . 如果值为nil,则行为未定义,并且可能在将来的Mac OS X版本中更改 .Return Value:
如果接收者和另一个日子彼此完全相等,
NSOrderedSame
如果接收者的时间晚于anotherDate,
NSOrderedDescending
如果接收者的时间早于anotherDate,
NSOrderedAscending
.您想使用NSDate compare:,laterDate:,earlyDate:或isEqualToDate:方法 . 在这种情况下使用<和>运算符是比较指针,而不是日期
我们假设两个日期:
然后以下比较将告诉哪个是早/晚/相同:
有关详细信息,请参阅NSDate class documentation .
我遇到了几乎相同的情况,但在我的情况下,我正在检查是否有天数差异
当您需要比较天/月/年单位的NSDate时很有用
在Swift中,您可以重载现有的运算符:
然后,您可以直接将NSDates与
<
,>
和==
(已经支持)进行比较 .使用此简单功能进行日期比较