-(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: -secondsPerDay];
// 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:10];
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=[NSDate dateWithTimeIntervalSinceNow: 0*24*60*60];//dayDelay代表向后推几天,如果是0则代表是今天,如果是1就代表向后推24小时,如果想向后推12小时,就可以改成dayDelay*12*60*60,让dayDelay=1
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];//设置成中国阳历
NSDateComponents *comps = [[NSDateComponents alloc] 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 =[NSString stringWithFormat:@"%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;
}