您的位置:首页 > 其它

NSDate、NSCalendar

2015-06-05 14:02 197 查看
基本的时间格式
#define kDefaultFormat                  @"yyyyMMddHHmmss"
#define kDefaultFormat2                 @"yyyyMMddHHmmssSSS"
#define kDatabaseDateFormat             @"yyyy-MM-dd HH:mm:ss"
#define kDatabaseDateFormatWithTimeZone @"yyyy-MM-dd HH:mm:ss Z"
#define kDatabaseDateFormatWithSecond   @"yyyy-MM-dd HH:mm"
#define kMsecFormat                     @"yyyy-MM-dd HH:mm:ss.SSS"
#define kDayFormat                      @"yyyy-MM-dd"
#define kDayFormat2                     @"yy-MM-dd"
#define khourAndMinFormat               @"HH:mm"
#define khourMinSecondFormat            @"HH:mm:ss"
//将string 转化成date
<p class="p2"></p><p class="p1"><span class="s1">+ (</span><span class="s2">NSDate</span><span class="s1"> *)dateFromString:(</span><span class="s2">NSString</span><span class="s1"> *)dateString withFormat:(</span><span class="s2">NSString</span><span class="s1"> *)format</span></p><p class="p1"><span class="s1">{</span></p><p class="p1"><span class="s1"><span style="white-space:pre"></span></span></p><p class="p1"><span class="s1">    </span><span class="s2">NSDateFormatter</span><span class="s1"> *formatter = [[</span><span class="s2">NSDateFormatter</span><span class="s1"> </span><span class="s3">alloc</span><span class="s1">] </span><span class="s3">init</span><span class="s1">];</span></p><p class="p2"><span class="s2">    [formatter </span><span class="s3">setDateFormat</span><span class="s2">:formate];</span></p><p class="p2"><span class="s2">    </span><span class="s4">NSDate</span><span class="s2"> *date = [formatter </span><span class="s3">dateFromString</span><span class="s2">:datestring];</span></p><p class="p2"><span class="s2">   </span><span class="s5">return</span><span class="s2"> date;</span></p><p class="p1"><span class="s1">}</span></p><p class="p1"><span class="s1"></span><pre name="code" class="objc"><p class="p1"><span class="s1">//date </span><span class="s2">转化为</span><span class="s1">string</span></p><p class="p2"><span class="s1">+ (</span><span class="s3">NSString</span><span class="s1"> *)stringFromDate:(</span><span class="s3">NSDate</span><span class="s1"> *)date withFormat:(</span><span class="s3">NSString</span><span class="s1"> *)format</span></p><p class="p2"><span class="s1">{</span></p><p class="p2"><span style="white-space:pre"></span></p><p class="p1"><span class="s1">    </span><span class="s2">NSDateFormatter</span><span class="s1"> *formatter = [[</span><span class="s2">NSDateFormatter</span><span class="s1"> </span><span class="s3">alloc</span><span class="s1">] </span><span class="s3">init</span><span class="s1">];</span></p><p class="p2"><span class="s2">    [formatter </span><span class="s3">setDateFormat</span><span class="s2">:formate];</span></p><p class="p2"><span class="s2">    </span><span class="s4">NSString</span><span class="s2"> *str = [formatter </span><span class="s3">stringFromDate</span><span class="s2">:date];</span></p><p class="p2"><span class="s2">    </span><span class="s5">return</span><span class="s2"> str;</span></p>
}
//获取两个时间天数差+ (NSInteger)daysBetween:(NSString *)date1 andDate:(NSString *)date2 dateFormat:(NSString*)format{NSDate *d1 = [NSDatedateFromString:date1 withFormat:format];NSDate *d2 = [NSDatedateFromString:date2 withFormat:format];NSCalendar *gregorian = [[NSCalendaralloc] initWithCalendarIdentifier:NSGregorianCalendar];unsignedint unitFlags = NSDayCalendarUnit;NSDateComponents *comps = [gregoriancomponents:unitFlags fromDate:d1toDate:d2 options:0];NSInteger days = [compsday];return days;}//根据type返回两个时间差(分/秒/时)+ (NSInteger)dateBetween:(NSString *)da1 andDate:(NSString *)da2 dateFormat:(NSString*)format intervalType:(IntervalType)type{NSDate *date1 = [NSDatedateFromString:da1 withFormat:format];NSDate *date2 = [NSDatedateFromString:da2 withFormat:format];NSCalendar *gregorian = [[NSCalendaralloc] initWithCalendarIdentifier:NSGregorianCalendar];switch (type){caseIntervalTypeEra:{unsignedint unitFlags = NSCalendarUnitEra;NSDateComponents *comps = [gregoriancomponents:unitFlags fromDate:date1toDate:date2 options:0];return [compsera];}caseIntervalTypeYear:{unsignedint unitFlags = NSCalendarUnitYear;NSDateComponents *comps = [gregoriancomponents:unitFlags fromDate:date1toDate:date2 options:0];return [compsyear];}caseIntervalTypeMonth:{unsignedint unitFlags = NSCalendarUnitMonth;NSDateComponents *comps = [gregoriancomponents:unitFlags fromDate:date1toDate:date2 options:0];return [compsmonth];}caseIntervalTypeDay:{unsignedint unitFlags = NSCalendarUnitDay;NSDateComponents *comps = [gregoriancomponents:unitFlags fromDate:date1toDate:date2 options:0];return [compsday];}caseIntervalTypeHour:{unsignedint unitFlags = NSCalendarUnitHour;NSDateComponents *comps = [gregoriancomponents:unitFlags fromDate:date1toDate:date2 options:0];return [compshour];}caseIntervalTypeMinute:{unsignedint unitFlags = NSCalendarUnitMinute;NSDateComponents *comps = [gregoriancomponents:unitFlags fromDate:date1toDate:date2 options:0];return [compsminute];}caseIntervalTypeSecond:{unsignedint unitFlags = NSCalendarUnitSecond;NSDateComponents *comps = [gregoriancomponents:unitFlags fromDate:date1toDate:date2 options:0];return [compssecond];}}return0;}//判断今天、昨天还是日期+ (NSString *)compareDate:(NSDate *)date{NSDate *today = [NSDatedate];NSDate *yesterday = [NSDatedateWithTimeIntervalSinceNow:-86400];NSDate *refDate = date;// 10 first characters of description is the calendar date:NSString *todayString = [[todaydescription] substringToIndex:10];NSString *yesterdayString = [[yesterdaydescription] substringToIndex:10];NSString *refDateString = [[refDatedescription] substringToIndex:10];if ([refDateStringisEqualToString:todayString]){NSString *todayTime = [NSDatestringFromDate:date withFormat:@"HH:mm"];return todayTime;}elseif ([refDateString isEqualToString:yesterdayString]){return@"昨天";}else{NSDateFormatter *formatter = [[NSDateFormatteralloc] init];[formatter setDateFormat:@"MM-dd"];NSString *str = [formatterstringFromDate:date];return str;}}//给个date返回星期几+ (NSString *)getOfWeekWithDate:(NSDate *)date{NSCalendar *calendar = [[NSCalendaralloc] initWithCalendarIdentifier:NSGregorianCalendar];NSDateComponents *comps;// = [[NSDateComponents alloc] init];NSInteger unitFlags =NSYearCalendarUnit |NSMonthCalendarUnit |NSDayCalendarUnit |NSWeekdayCalendarUnit |NSHourCalendarUnit |NSMinuteCalendarUnit |NSSecondCalendarUnit;comps = [calendar components:unitFlagsfromDate:date];switch ([compsweekday]) {case1:return@"星期日";case2:return@"星期一";case3:return@"星期二";case4:return@"星期三";case5:return@"星期四";case6:return@"星期五";case7:return@"星期六";default:return@"";}}//给个date返回本周所有日期str+ (NSArray *)currentWeekDays:(NSDate *)currentDate{NSMutableArray *array = [NSMutableArrayarray];// 获取今天星期几(数字)NSInteger today = [selfweekDayWithDate:currentDate];for (int i =0; i < 7; i++) {// 周一到周日七天距离今天的时间差(以秒为单位)double timeInterval = (i +1 - today) *24 * 60 *60;// 周一到周日的DATE对象NSDate *date  = [NSDatedateWithTimeInterval:timeIntervalsinceDate:currentDate];// 周一到周日的字符串对象NSString *dateStr = [NSDatestringFromDate:date withFormat:kDayFormat];// 添加到数组[array addObject:dateStr];}return array;}// 根据日期获取星期,返回数字(1~7)+ (NSInteger)weekDayWithDate:(NSDate *)date{// 得到日期那天星期几NSString *weekday = [selfgetOfWeekWithDate:date];// 将星期转换成对应数字return [selfweekNumberWithWeekDayString:weekday];}// 将星期转换成数字(星期一:1,星期二:2,星期三:3 ...)+ (NSInteger)weekNumberWithWeekDayString:(NSString *)weekDay{if ([weekDayisEqualToString:@"星期一"])return 1;if ([weekDayisEqualToString:@"星期二"])return 2;if ([weekDayisEqualToString:@"星期三"])return 3;if ([weekDayisEqualToString:@"星期四"])return 4;if ([weekDayisEqualToString:@"星期五"])return 5;if ([weekDayisEqualToString:@"星期六"])return 6;if ([weekDayisEqualToString:@"星期日"])return 7;return0;}//返回这周在今年的index+ (NSInteger)getWeekIndexForYearWithDate:(NSDate *)date{NSCalendar *calendar = [NSCalendarcurrentCalendar];NSInteger count = [calendarordinalityOfUnit:NSCalendarUnitWeekOfYearinUnit:NSCalendarUnitYearforDate:date];return count;}//判断两个date是否处于同一周+ (BOOL)isSameWeekDate:(NSDate *)date1 withDate:(NSDate *)date2{NSArray *weeks = [selfgetWeekOfDaysWithDate:date1];NSString *day2 = [NSDatestringFromDate:date2 withFormat:kDayFormat];return [weekscontainsObject:day2];}
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: