前言:總結(jié)了學(xué)習(xí)中遇到的幾種NSDate和NSString比較的情況
pragma mark -- 01 時間字符串轉(zhuǎn)NSDate / NSDate 轉(zhuǎn) NSString
#date轉(zhuǎn)NSString
-(void) date2string
{
//獲得手機(jī)當(dāng)前時間
NSDate *date = [NSDate date];
//時間轉(zhuǎn)碼
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy年MM月dd號 HH:mm:ss";
NSString *string = [fmt stringFromDate:date];
NSLog(@"----%@+++++", string);
}
#NSString轉(zhuǎn)date
-(void) string2date
{
// 時間字符串
NSString *string = @"2016-07-13 09:33:22";
// 日期格式化類
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
// 設(shè)置日期格式(為了轉(zhuǎn)換成功)
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
// NSString * -> NSDate *
NSDate *date = [fmt dateFromString:string];
NSString *newStr = [fmt stringFromDate:date];
NSLog(@"%@", date);
NSLog(@"%@", newStr);
}
pragma mark -- 02 時間字符串轉(zhuǎn)為NSDate鳍鸵,并獲得和當(dāng)前時間的時間差(單位秒)
//寫成一個方法了,要運行直接調(diào)用就好
-(void)dateCompare1
{
// 時間字符串(自己寫的時間)
NSString *createdAtString = @"2016-07-13 15:28:00";
//時間轉(zhuǎn)碼
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
//時間轉(zhuǎn)碼格式
//時間樣式
// yyyy 年 MM 月 dd 日 HH 24小時 hh 12小時 mm 分鐘 ss 秒鐘 Z 時區(qū)
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
//將字符串時間按當(dāng)前轉(zhuǎn)碼方式轉(zhuǎn)換為NSDate類型
NSDate *createdAtDate = [fmt dateFromString:createdAtString];
//轉(zhuǎn)換后的時間和當(dāng)前手機(jī)時間做比較(兩種方法)
// 手機(jī)當(dāng)前時間
// NSDate *nowDate = [NSDate date];
// 獲得createdAtDate和nowDate的時間間隔(間隔多少秒)
// NSTimeInterval interval = [nowDate timeIntervalSinceDate:createdAtDate];
//第二種方法:直接調(diào)用蘋果封裝的方法
NSTimeInterval interval = [createdAtDate timeIntervalSinceNow];
//打印出來的是兩者間隔的秒數(shù)
NSLog(@"%f", interval);
}
pragma mark -- 03 兩個時間字符串的比較尉间,比較的屬性有(年月日時分秒)
-(void)dateCompare2
{
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
// 時間字符串1
NSString *createdAtString = @"2016-07-01 09:10:05";
NSDate *createdAtDate = [fmt dateFromString:createdAtString];
// 時間字符串2
NSString *otherString = @"2016-07-13 08:56:45";
NSDate *otherDate = [fmt dateFromString:otherString];
// 獲得NSCalendar(日歷類)
NSCalendar *calendar = nil;
if ([NSCalendar respondsToSelector:@selector(calendarWithIdentifier:)]) {
calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
} else {
calendar = [NSCalendar currentCalendar];
}
// 獲得日期之間的間隔
NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
NSDateComponents *cmps = [calendar components:unit fromDate:createdAtDate toDate:otherDate options:0];
//這個打印值是一個枚舉值
NSLog(@"%@", cmps);
#打印結(jié)果
Calendar
Year: 0 //年相差為0
Month: 0 //月相差為0
Day: 11
Hour: 23
Minute: 46
Second: 40
}
pragma mark -- 04 判斷時間字符串和當(dāng)前手機(jī)時間的大小
-(void)dateCompare
{
// 時間字符串
NSString *createdAtString = @"2016-07-13 15:56:05";
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSDate *createdAtDate = [fmt dateFromString:createdAtString];
// 手機(jī)當(dāng)前時間
NSDate *nowDate = [NSDate date];
/**
NSComparisonResult的取值
NSOrderedAscending = -1L, // 升序, 越往右邊越大
NSOrderedSame, // 相等
NSOrderedDescending // 降序, 越往右邊越小
*/
// 獲得比較結(jié)果(誰大誰小)
NSComparisonResult result = [nowDate compare:createdAtDate];
if (result == NSOrderedAscending) { // 升序, 越往右邊越大
NSLog(@"createdAtDate > nowDate");
} else if (result == NSOrderedDescending) { // 降序, 越往右邊越小
NSLog(@"createdAtDate < nowDate");
} else {//兩者相等
NSLog(@"createdAtDate == nowDate");
}
}
pragma mark -- 05 獲取日期元素
/**
* 日期元素 : 年月日時分秒
*/
-(void) getComponentsOfDate
{
// 時間字符串
NSString *string = @"2016-07-13 09:10:05";
// 日期格式化類
NSDateFormatter *fmt = [[NSDateFormatter alloc] init];
// 設(shè)置日期格式(為了轉(zhuǎn)換成功)
fmt.dateFormat = @"yyyy-MM-dd HH:mm:ss";
// NSString * -> NSDate *
NSDate *date = [fmt dateFromString:string];
// 利用NSCalendar處理日期
//初始化
NSCalendar *calendar = [NSCalendar currentCalendar];
//獲取日期元素的方法
NSInteger month = [calendar component:NSCalendarUnitMonth fromDate:date];
NSInteger hour = [calendar component:NSCalendarUnitHour fromDate:date];
NSInteger minute = [calendar component:NSCalendarUnitMinute fromDate:date];
NSLog(@"%zd %zd %zd", month, hour, minute);
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者