版本
Xcode 8.2.1
沒什么可說的洛心,直接上代碼吧。注意實(shí)例化日期解析器和設(shè)置它的格式题篷。等到后面寫到UI篇的時(shí)候再提及词身。
int main(int argc, char * argv[]) {
//時(shí)間戳:計(jì)算機(jī)元年(1970年1月1日)距離當(dāng)前時(shí)間的總秒數(shù)
//服務(wù)器給時(shí)間時(shí)(如截止日期),最好給時(shí)間戳番枚,比較好處理
//日期解析器:將日期按某種格式輸出
//默認(rèn)時(shí)區(qū):格林威治標(biāo)準(zhǔn)時(shí)間GMT
//獲取計(jì)算機(jī)當(dāng)前的時(shí)間(GMT)
NSDate *currentDate = [NSDate date];
NSLog(@"格林威治標(biāo)準(zhǔn)時(shí)間GMT:%@",currentDate);
//日期解析器
NSDateFormatter *dateFormatter = [NSDateFormatter new];
//設(shè)置時(shí)區(qū)
dateFormatter.timeZone = [NSTimeZone timeZoneWithName:@"Beijing"];
// dateFormatter.timeZone = [NSTimeZone systemTimeZone]; //與設(shè)備系統(tǒng)時(shí)區(qū)一致
//設(shè)置日期格式
dateFormatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
//可刪掉不需要的法严,“-”可換成其他字符,如“:”
dateFormatter.dateFormat = @"yyyy:MM:dd HH:mm:ss";
//把NSDate對(duì)象轉(zhuǎn)換成字符串輸出
NSString *dateStr = [dateFormatter stringFromDate:currentDate];
NSLog(@"當(dāng)前北京時(shí)間:%@",dateStr);
//把字符串轉(zhuǎn)換成NSDate對(duì)象
NSDate *distanceDate = [dateFormatter dateFromString:@"2033:03:03 15:33:33"]; //格式需與之前設(shè)置的dateFormat一樣
if (distanceDate) {
//轉(zhuǎn)換成功
//計(jì)算兩個(gè)時(shí)間相差的總秒數(shù)
NSInteger seconds = [currentDate timeIntervalSinceDate:distanceDate];
NSLog(@"剩余%ld天%ld小時(shí)%ld分%ld秒到期",seconds/(3600*24),seconds%(3600*24)/3600,seconds%3600/60,seconds%60);
//距離現(xiàn)在的時(shí)間
NSInteger seconds1 = distanceDate.timeIntervalSinceNow;
NSLog(@"距離現(xiàn)在有%ld秒",(long)seconds1);
//距離1970年時(shí)間
NSInteger seconds2 = distanceDate.timeIntervalSince1970;
NSLog(@"距離1970年有%ld秒",(long)seconds2);
}
}
注意: 日期格式中, 年使用小寫yyyy, 因?yàn)楫?dāng)你使用大寫YYYY, 如果12月的最后一周有下一年的1月1日的話, 得到的結(jié)果是下一年的, 如2017年卻獲得2018年; 小時(shí)使用大寫"HH", 這時(shí)獲取的是24小時(shí)制的, 如晚上8點(diǎn)獲得20; 如果使用小寫"hh", 且用戶在手機(jī)設(shè)置里把時(shí)間調(diào)為12小時(shí)制的話, 獲取到的時(shí)間是12小時(shí)制的, 如晚上8點(diǎn)獲得8.
我的結(jié)果: