iOS开发中,时间是常用的 ;主要有NSDate、NSDateComponents、NSCalendar(日历)等几个常用类
NSDate是iOS Foundation框架下的时间类,在iOS系统机制下,时间上是精确到秒的,所以时间输出格式最全的为:yyyy:mm:dd:hh:mm:ss;
主要涉及到的方法如下
NSTimeInterval time = 12000;//秒
//获取自1970年开始time秒后的那个时间
NSDate *date1 = [NSDate dateWithTimeIntervalSince1970:time];
//获取自某个时间后time秒的那个时间
NSDate *date2 = [NSDate dateWithTimeInterval:time sinceDate:date1];
//获取从2001年开始,(负)之前time秒的时间,(正)之后time秒的时间
NSDate *date3 = [NSDate dateWithTimeIntervalSinceReferenceDate:-24*60*60];
//规范时间的输出格式
NSDateFormatter *form = [[NSDateFormatter alloc] init];
[form setDateFormat:@"yyyy:mm:dd:hh:mm:ss"];
NSString *dateString = [form stringFromDate:date3];
//计算两个时间之间相隔的秒数
NSTimeInterval interval1 = [date2 timeIntervalSinceDate:date1];
NSTimeInterval interval2 = [date2 timeIntervalSince1970];
NSTimeInterval interval3 = [date2 timeIntervalSinceNow];
NSTimeInterval interval4 = [date2 timeIntervalSinceReferenceDate];
NSLog(@"%@",[form stringFromDate:date3]);
//日历相关,这里只写获取时间中对应的农历的方式
NSCalendar *calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierChinese];
CGFloat deviceVersion = [[UIDevice currentDevice].systemVersion floatValue];
NSInteger flag = 0;
if(deviceVersion>=8.0)
{
flag = NSCalendarUnitMonth|NSCalendarUnitYear|NSCalendarUnitWeekday|NSCalendarUnitDay;
}
else
{
flag = NSMonthCalendarUnit|NSYearCalendarUnit|NSDayCalendarUnit|NSWeekdayCalendarUnit;
}
NSString *component = @"year";
NSDateComponents *components = [calendar components:flag fromDate:date1];
NSInteger dateInt = 0;
if([component isEqualToString:@"year"])
{
dateInt = [components year];
}
if([component isEqualToString:@"month"])
{
dateInt = [components month];
}
if([component isEqualToString:@"day"])
{
dateInt = [components day];
}
if([component isEqualToString:@"weekDay"])
{
dateInt = [components weekday];
}