判斷NSDate是昨天,今天,星期幾等
-(NSString *)compareDate:(NSDate *)date{ //一: NSCalendar *cal = [NSCalendar currentCalendar]; NSDateComponents *components = [cal components:(NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:[NSDate date]]; NSDate *today = [cal dateFromComponents:components]; components = [cal components:(NSEraCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit) fromDate:date]; NSDate *otherDate = [cal dateFromComponents:components]; if([today isEqualToDate:otherDate]) { return @"今天"; } //二; NSDate * today = [NSDate date]; NSDate * yesterday = [NSDate dateWithTimeIntervalSinceNow:-86400]; NSDate * refDate = date; // 10 first characters of description is the calendar date: NSString * todayString = [[today description] substringToIndex:10]; NSString * yesterdayString = [[yesterday description] substringToIndex:10]; NSString * refDateString = [[refDate description] substringToIndex:10]; if ([refDateString isEqualToString:todayString]) { return @"今天"; } else if ([refDateString isEqualToString:yesterdayString]) { return @"昨天"; } else { return [self formatDate:date]; } } -(NSString *)formatDate:(NSDate *)date{ NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //[formatter setDateFormat:@"MM-dd HH:mm"]; NSString* str = [formatter stringFromDate:date]; return str; }
另一種方法也可以:
-(NSString *)getStringWithDate:(NSDate *)date{
NSTimeInterval secondsPerDay = 24 * 60 * 60;
NSDate *today = [[NSDatealloc]init];
NSDate *tomorrow, *yesterday;
tomorrow = [today dateByAddingTimeInterval: secondsPerDay];
yesterday = [today dateByAddingTimeInterval
// 10 first characters of description is the calendar date:
NSString * todayString = [[today description] substringToIndex:10];
NSString * yesterdayString = [[yesterday description] substringToIndex:10];
NSString * tomorrowString = [[tomorrow description] substringToIndex
NSString * dateString = [[datedescription]substringToIndex:10];
if ([dateString isEqualToString:todayString])
{
return @"今天";
} else if ([dateStringisEqualToString:yesterdayString])
{
return @"昨天";
}else if ([dateStringisEqualToString:tomorrowString])
{
return @"明天";
}
else
{
return dateString;
}
}
判斷星期幾- (NSString*)weekdayStringFromDate:(NSDate*)inputDate {
NSArray *weekdays = [NSArray arrayWithObjects: [NSNull null], @"星期天", @"星期一", @"星期二", @"星期三", @"星期四", @"星期五", @"星期六", nil];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSTimeZone *timeZone = [[NSTimeZone alloc] initWithName:@"Asia/Shanghai"];
[calendar setTimeZone: timeZone];
NSCalendarUnit calendarUnit = NSCalendarUnitWeekday;
NSDateComponents *theComponents = [calendar components:calendarUnit fromDate:inputDate];
return [weekdays objectAtIndex:theComponents.weekday];
}
判斷農曆
-(NSString*)getChineseCalendarWithDate:(NSDate *)date{
NSArray *chineseYears = [NSArray arrayWithObjects:
@"甲子", @"乙丑", @"丙寅", @"丁卯", @"戊辰", @"己巳", @"庚午", @"辛未", @"壬申", @"癸酉",
@"甲戌", @"乙亥", @"丙子", @"丁丑", @"戊寅", @"己卯", @"庚辰", @"辛己", @"壬午", @"癸未",
@"甲申", @"乙酉", @"丙戌", @"丁亥", @"戊子", @"己丑", @"庚寅", @"辛卯", @"壬辰", @"癸巳",
@"甲午", @"乙未", @"丙申", @"丁酉", @"戊戌", @"己亥", @"庚子", @"辛丑", @"壬寅", @"癸丑",
@"甲辰", @"乙巳", @"丙午", @"丁未", @"戊申", @"己酉", @"庚戌", @"辛亥", @"壬子", @"癸丑",
@"甲寅", @"乙卯", @"丙辰", @"丁巳", @"戊午", @"己未", @"庚申", @"辛酉", @"壬戌", @"癸亥", nil];
NSArray *chineseMonths=[NSArray arrayWithObjects:
@"正月", @"二月", @"三月", @"四月", @"五月", @"六月", @"七月", @"八月",
@"九月", @"十月", @"冬月", @"臘月", nil];
NSArray *chineseDays=[NSArray arrayWithObjects:
@"初一", @"初二", @"初三", @"初四", @"初五", @"初六", @"初七", @"初八", @"初九", @"初十",
@"十一", @"十二", @"十三", @"十四", @"十五", @"十六", @"十七", @"十八", @"十九", @"二十",
@"廿一", @"廿二", @"廿三", @"廿四", @"廿五", @"廿六", @"廿七", @"廿八", @"廿九", @"三十", nil];
NSCalendar *localeCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierChinese];
unsigned unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;
NSDateComponents *localeComp = [localeCalendar components:unitFlags fromDate:date];
NSLog(@"%zd_%zd_%zd",localeComp.year,localeComp.month,localeComp.day);
NSString *y_str = [chineseYears objectAtIndex:localeComp.year-1];
NSString *m_str = [chineseMonths objectAtIndex:localeComp.month-1];
NSString *d_str = [chineseDays objectAtIndex:localeComp.day-1];
NSString *chineseCal_str =[NSString stringWithFormat: @"%@_%@_%@",y_str,m_str,d_str];
return chineseCal_str;
}
文章總結:
NSDate *dateNow;
dateNow=[NSDatedateWithTimeIntervalSinceNow: 0*24*60*60];//dayDelay代表向後推幾天,如果是0則代表是今天,如果是1就代表向後推24小時,如果想向後推12小時,就可以改成dayDelay*12*60*60,讓dayDelay=1
NSCalendar *calendar = [[NSCalendaralloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];//設定成中國陽曆
NSDateComponents *comps = [[NSDateComponentsalloc] init];
NSCalendarUnit unitFlags = NSCalendarUnitYear |NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
//這句我也不明白具體時用來做什麼。。。
comps = [calendar components:unitFlags fromDate:dateNow];
long weekNumber = [comps weekday]; //獲取星期對應的長整形字串
long day=[comps day];//獲取日期對應的長整形字串
long year=[comps year];//獲取年對應的長整形字串
long month=[comps month];//獲取月對應的長整形字串
long hour=[comps hour];//獲取小時對應的長整形字串
long minute=[comps minute];//獲取月對應的長整形字串
long second=[comps second];//獲取秒對應的長整形字串
NSLog(@"%ld年-%ld月-%ld日,%ld時-%ld分-%ld秒",year,month,day,hour,minute,second);
NSLog(@"%ld",weekNumber);
NSString *riQi =[NSStringstringWithFormat:@"%ld日",day];//把日期長整形轉成對應的漢字字串
switch (weekNumber) {
case 1:
weekDay=@"星期日";
break;
case 2:
weekDay=@"星期一";
break;
case 3:
weekDay=@"星期二";
break;
case 4:
weekDay=@"星期三";
break;
case 5:
weekDay=@"星期四";
break;
case 6:
weekDay=@"星期五";
break;
case 7:
weekDay=@"星期六";
break;
default:
break;
}