1 //當前時間創建NSDate
NSDate?*myDate = [NSDate?date];
NSLog(@"myDate = %@",myDate);
2?//從現在開始的24小時
NSTimeInterval?secondsPerDay =?24*60*60;
NSDate?*tomorrow = [NSDate?dateWithTimeIntervalSinceNow:secondsPerDay];
NSLog(@"myDate = %@",tomorrow);
3//根據已有日期創建日期
NSTimeInterval?secondsPerDay1 =?24*60*60;
NSDate?*now = [NSDate?date];
NSDate?*yesterDay = [now?addTimeInterval:secondsPerDay1];
NSLog(@"yesterDay = %@",yesterDay);
4//比較日期
BOOL?sameDate = [now?isEqualToDate:yesterDay];
NSLog(@"sameDate = %lu",sameDate);
4.1//獲取較早的日期
NSDate?*earlierDate = [yesterDay?earlierDate:now];
NSLog(@"earlierDate? = %@",earlierDate);
4.2//較晚的日期
NSDate?*laterDate = [yesterDay?laterDate:now];
NSLog(@"laterDate? = %@",laterDate);
//兩個日期之間相隔多少秒
NSTimeInterval?secondsBetweenDates= [yesterDay?timeIntervalSinceDate:now];
NSLog(@"secondsBetweenDates=? %lf",secondsBetweenDates);
//通過NSCALENDAR類來創建日期
NSDateComponents?*comp = [[NSDateComponents alloc]init];
[comp?setMonth:06];
[comp?setDay:01];
[comp?setYear:2001];
NSCalendar?*myCal = [[NSCalendaralloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDate?*myDate1 = [myCal?dateFromComponents:comp];
NSLog(@"myDate1 = %@",myDate1);
//從已有日期獲取日期
NSCalendar * myCall = [NSCalendar alloc] initWithCalendarLdentifier:NSGregorianCalendar];
NSDateComponents * comp1 = [myCalcomponents:NSMonthCalendarUnit | NSDayCalendarUnit | NSYearCalendarUnitfromDate:now];
NSIntegermonth = [comp1 month];
NSIntegeryear = [comp1 year];
NSIntegerday = [comp1 day];
//NSDateFormatter實現日期的輸出
NSDateFormatter?*formatter = [[NSDateFormatteralloc]init];
[formatter?setDateStyle:NSDateFormatterFullStyle];//直接輸出的話是機器碼
//或者是手動設置樣式[formatter setDateFormat:@"yyyy-mm-dd"];
NSString?*string = [formatter?stringFromDate:now];
NSLog(@"string = %@",string);
NSLog(@"formater = %@",formatter);
//獲取日期格式對象
- (NSDateFormatter *)dateFormatter {
if (dateFormatter == nil) {
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
}
return dateFormatter;
}
NSString與NSDate互相轉換及NSDate比較
由NSDate轉換為NSString:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *strDate = [dateFormatter stringFromDate:[NSDate date]];
NSLog(@"%@", strDate);
[dateFormatter release];
結果:
2010-08-04 16:01:03
由NSString轉換為NSDate:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [dateFormatter dateFromString:@"2010-08-04 16:01:03"];
NSLog(@"%@", date);
[dateFormatter release];
結果:
2010-08-04 16:01:03 +0800
日期之間比較可用以下方法
- (BOOL)isEqualToDate:(NSDate *)otherDate;
與otherDate比較,相同返回YES
- (NSDate *)earlierDate:(NSDate *)anotherDate;
與anotherDate比較,返回較早的那個日期
- (NSDate *)laterDate:(NSDate *)anotherDate;
與anotherDate比較,返回較晚的那個日期
- (NSComparisonResult)compare:(NSDate *)other;
該方法用于排序時調用:
.當實例保存的日期值與anotherDate相同時返回NSOrderedSame
.當實例保存的日期值晚于anotherDate時返回NSOrderedDescending
.當實例保存的日期值早于anotherDate時返回NSOrderedAscending
只顯示年月日
NSDateComponents * componentOne = [[NSCalendar currentCalendar] components: NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendar:sm.createTime];
NSString * timeStr = [NSStrin stringWithFormat:@"%d-%d-%d",componentOne.year,componentOne.month,componentOne.day];
1.創建或初始化可用以下方法
用于創建NSDate實例的類方法有
+ (id)date;
返回當前時間
+ (id)dateWithTimeIntervalSinceNow:(NSTimeInterval)secs;
返回以當前時間為基準,然后過了secs秒的時間
+ (id)dateWithTimeIntervalSinceReferenceDate:(NSTimeInterval)secs;
返回以2001/01/01 GMT為基準,然后過了secs秒的時間
+ (id)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;
返回以1970/01/01 GMT為基準,然后過了secs秒的時間
+ (id)distantFuture;
返回很多年以后的未來的某一天。(比如你需要一個比現在(Now)晚(大)很長時間的時間值,則可以調用該方法。測試返回了4000/12/31 16:00:00)
+ (id)distantPast;
返回很多年以前的某一天。(比如你需要一個比現在(Now)早(小)大很長時間的時間值,則可以調用該方法。測試返回了公元前0001/12/31 17:00:00)
用于創建NSDate實例的實例方法有
- (id)addTimeInterval:(NSTimeInterval)secs;
返回以目前的實例中保存的時間為基準,然后過了secs秒的時間
用于初始化NSDate實例的實例方法有
- (id)init;
初始化為當前時間。類似date方法
初始化為以2001/01/01 GMT為基準,然后過了secs秒的時間。類似dateWithTimeIntervalSinceReferenceDate:方法
- (id)initWithTimeInterval:(NSTimeInterval)secs sinceDate:(NSDate *)refDate;
初始化為以refDate為基準,然后過了secs秒的時間
- (id)initWithTimeIntervalSinceNow:(NSTimeInterval)secs;
初始化為以當前時間為基準,然后過了secs秒的時間
2.日期之間比較可用以下方法
- (BOOL)isEqualToDate:(NSDate *)otherDate;
與otherDate比較,相同返回YES
- (NSDate *)earlierDate:(NSDate *)anotherDate;
與anotherDate比較,返回較早的那個日期
- (NSDate *)laterDate:(NSDate *)anotherDate;
與anotherDate比較,返回較晚的那個日期
- (NSComparisonResult)compare:(NSDate *)other;
該方法用于排序時調用:
.當實例保存的日期值與anotherDate相同時返回NSOrderedSame
.當實例保存的日期值晚于anotherDate時返回NSOrderedDescending
.當實例保存的日期值早于anotherDate時返回NSOrderedAscending
3.取回時間間隔可用以下方法
- (NSTimeInterval)timeIntervalSinceDate:(NSDate *)refDate;
以refDate為基準時間,返回實例保存的時間與refDate的時間間隔
- (NSTimeInterval)timeIntervalSinceNow;
以當前時間(Now)為基準時間,返回實例保存的時間與當前時間(Now)的時間間隔
- (NSTimeInterval)timeIntervalSince1970;
以1970/01/01 GMT為基準時間,返回實例保存的時間與1970/01/01 GMT的時間間隔
- (NSTimeInterval)timeIntervalSinceReferenceDate;
以2001/01/01 GMT為基準時間,返回實例保存的時間與2001/01/01 GMT的時間間隔
+ (NSTimeInterval)timeIntervalSinceReferenceDate;
以2001/01/01 GMT為基準時間,返回當前時間(Now)與2001/01/01 GMT的時間間隔
4.將時間表示成字符串
- (NSString *)description;
以YYYY-MM-DD HH:MM:SS ±HHMM的格式表示時間。(其中“±HHMM”表示與GMT的存在多少小時多少分鐘的時區差異。比如,若時區設置在北京,則“±HHMM”顯示為“+0800″)