#import "ViewController.h"atom
@interface ViewController ()component
@property (nonatomic, strong) NSDateFormatter * dateFormatter;orm
@property (nonatomic, strong) NSDate * today;get
@property (nonatomic, strong) NSDate * tomorrow;string
@property (nonatomic, strong) NSDate * yesterday;it
@endio
@implementation ViewControllerimport
- (void)viewDidLoad {object
[super viewDidLoad];date
//獲取今天昨天和明天等等(NSDate內容)
[self getYesterdayOrtomorrowTime];
//日曆(NSCalendar相關內容)
[self aboutCalendar];
}
- (void)aboutCalendar{
NSCalendar *calendar = [NSCalendar currentCalendar];//日曆
/**
NSCalendarUnitEra = kCFCalendarUnitEra,//年代
NSCalendarUnitYear = kCFCalendarUnitYear,//年份
NSCalendarUnitMonth = kCFCalendarUnitMonth,//月份
NSCalendarUnitDay = kCFCalendarUnitDay,//幾號
NSCalendarUnitHour = kCFCalendarUnitHour,//幾點
NSCalendarUnitMinute = kCFCalendarUnitMinute,//幾分
NSCalendarUnitSecond = kCFCalendarUnitSecond,//幾秒
NSCalendarUnitWeekday = kCFCalendarUnitWeekday,//
NSCalendarUnitWeekdayOrdinal = kCFCalendarUnitWeekdayOrdinal,
NSCalendarUnitQuarter NS_ENUM_AVAILABLE(10_6, 4_0) = kCFCalendarUnitQuarter,
NSCalendarUnitWeekOfMonth NS_ENUM_AVAILABLE(10_7, 5_0) = kCFCalendarUnitWeekOfMonth,
NSCalendarUnitWeekOfYear NS_ENUM_AVAILABLE(10_7, 5_0) = kCFCalendarUnitWeekOfYear,
NSCalendarUnitYearForWeekOfYear NS_ENUM_AVAILABLE(10_7, 5_0) = kCFCalendarUnitYearForWeekOfYear,
NSCalendarUnitNanosecond NS_ENUM_AVAILABLE(10_7, 5_0) = (1 << 15),
NSCalendarUnitCalendar NS_ENUM_AVAILABLE(10_7, 4_0) = (1 << 20),
NSCalendarUnitTimeZone NS_ENUM_AVAILABLE(10_7, 4_0) = (1 << 21),
*/
/**************just return one value(從日期中獲取到年月日等等)************/
NSInteger unitData = [calendar component:NSCalendarUnitYearForWeekOfYear fromDate:self.today];
NSLog(@"unitData == %ld",unitData);
/**************比較兩個日期的年月日等************/
/**
*
NSOrderedAscending = -1L, 升序
NSOrderedSame, 相同
NSOrderedDescending 降序
*/
NSComparisonResult result = [calendar compareDate:self.yesterday toDate:self.tomorrow toUnitGranularity:NSCalendarUnitYear];
NSLog(@"%ld", result);
/**************get components from an object of NSDate, e.g.year month day****************/
NSDateComponents * components = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:self.today];
NSDateComponents * components2 = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay fromDate:self.yesterday];
NSLog(@"components 0 == %@", components);
/*****************difference of two NSDate object, result:e.g.1 year 1 month 0 day 4 minute*******************/
NSDateComponents * components1 = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:self.today toDate:self.tomorrow options:0];
NSLog(@"components 1 == %@", components1);
/*****************difference of two NSDateComponents object, result:e.g.1 year 1 month 0 day 4 minute*********************/
NSDateComponents * components3 = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth fromDateComponents:components2 toDateComponents:components options:0];
NSLog(@"components3 == %@", components3);
/**************** get components from date with timeZone******************/
NSDateComponents * components4 = [calendar componentsInTimeZone:[NSTimeZone timeZoneWithName:@"Asia/Beijing"] fromDate:self.today];
NSLog(@"components4 == %@", components4);
NSDate * zzdate = [calendar dateFromComponents:components4];
NSLog(@"zzdate == %@", zzdate);
}
#pragma mark - 根據時間間隔得到時間戳
- (NSString *)getTimeStampWithTimeInterval:(CGFloat)timeInterval{
NSDate * date = [NSDate dateWithTimeIntervalSince1970:timeInterval];
NSString * timeStr = [self.dateFormatter stringFromDate:date];
NSLog(@"%@", timeStr);
return timeStr;
}
#pragma mark - 根據傳入的時間獲取時間戳
- (NSString *)getTimeStampWithDate:(NSDate *)date{
NSString * tempStr = [self.dateFormatter stringFromDate:date];
NSLog(@"%@", tempStr);
return tempStr;
}
#pragma mark - 獲取當前時間,昨天、明天等時間
- (void)getYesterdayOrtomorrowTime{
//今天目前的時間
self.today = [NSDate date];
NSLog(@"today == %@", self.today);
//設置時間間隔
NSTimeInterval oneDayTimeInterval = 365 * 56 * 60 * 60 + 120 + 50.6;
//明天
self.tomorrow = [NSDate dateWithTimeIntervalSinceNow:oneDayTimeInterval];
NSLog(@"tomorrow == %@", self.tomorrow);
//昨天
self.yesterday = [NSDate dateWithTimeIntervalSinceNow:-oneDayTimeInterval];
NSLog(@"yesterday == %@", self.yesterday);
//比較兩個日期,早一些的
NSDate * earlierDate = [self.yesterday earlierDate:self.today];
NSLog(@"earlierDate == %@", earlierDate);
//比較兩個日期,晚一些的
NSDate * laterDate = [self.yesterday laterDate:self.tomorrow];
NSLog(@"laterDate == %@", laterDate);
}
- (NSDateFormatter *)dateFormatter{
if (!_dateFormatter) {
_dateFormatter = [[NSDateFormatter alloc] init];
/***************************設置時間格式**************************/
//設定時間格式,這裏能夠設置成本身須要的格式
[_dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
/**系統自帶的時間格式
* dateFormatter.dateStyle = kCFDateFormatterMediumStyle;
NSDateFormatterNoStyle = kCFDateFormatterNoStyle,
NSDateFormatterShortStyle = kCFDateFormatterShortStyle,//「11/23/37」 or 「3:30pm」
NSDateFormatterMediumStyle = kCFDateFormatterMediumStyle,//\"Nov 23, 1937\"
NSDateFormatterLongStyle = kCFDateFormatterLongStyle,//\"November 23, 1937」 or 「3:30:32pm\"
NSDateFormatterFullStyle = kCFDateFormatterFullStyle//「Tuesday, April 12, 1952 AD」 or "3:30:42pm PST"
*/
/*************************設置時區**************************/
NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithName:@"Asia/Beijing"];
[_dateFormatter setTimeZone:sourceTimeZone];
}
return _dateFormatter;
}