NSDate倒數計時的小心得

關於NSDate用法,常配合NSDateFormatter使用,一般我們想到要計算現在到幾天後過期,一般直覺就是取現在時間,然後把他用TimeInterval1970時間,再去加上多少杪來算時間,再去比較時間大小。

這在一般單純需要計算時,是蠻有用的,但是如果你是要處理一些檔案,設定幾天後到期,

例如你把下載的資料或是圖片存到某一資料夾,你設第三天後過期,又不想一次把整個資料夾全砍掉,現在提供一種方法給大家參考。

在檔案管理的API中,attributesOfItemAtPath 這個方法可以取得檔案的資訊,

你可以這樣寫

1
NSDictionary *attrs = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];

filePath你可以隨便給個檔案然後去Print-Object 一下attrs,

會發現有很多屬性,諸如: NSFileSize , NSFileModificationDate 等等

你可以取檔案中的Modify Date,然後去跟你設定的時間去做比較,

取出來是NSDate格式~你直覺想到可以轉成TimeInterval去比較,現在有個簡單方法

NSDate 有個屬性叫

- (NSDate *)earlierDate:(NSDate *)anotherDate;

- (NSDate *)laterDate:(NSDate *)anotherDate;

earlierDate是輸入一個NSDate時間,取比較早的時間返回,用法如下

1
2
3
4
5
6
7
8
9
NSDate *nowDate = [NSDate date];
NSDate *tomorrowDate = [NSDate dateWithTimeIntervalSinceNow:60 * 60 * 24]
NSDate *answerDate = [nowDate earlierDate:tomorrowDate];
//結果會傳回nowDate
laterDate: 則會回傳tomorrowDate

這作法跟轉成TimeInterval 去比大小是一樣的意思,不過既然內建有好用的api 那就用吧。

程式碼也縮短不少呢