1. 獲得當(dāng)前的時間(NSDate):
+ (NSDate *)currentDate {
NSDate *date = [NSDate date];
NSTimeZone *zone = [NSTimeZone systemTimeZone];
NSInteger interval = [zone secondsFromGMTForDate: date];
NSDate *localDate = [date? dateByAddingTimeInterval: interval];
return localDate;
}
PS: 有些人直接用[NSDate date];返回的數(shù)據(jù)作為當(dāng)前的時間,這樣做獲得的時間可能會有錯誤, 原因是因為時區(qū)的問題, 所以應(yīng)該獲得并設(shè)置當(dāng)前所在的時區(qū), ?[NSTimeZone timeZoneWithName:@"shanghai"]也是設(shè)置時區(qū)的方法;
2. 獲取從某個日期開始往前或者往后多久的日期(NSDate):
+ (NSDate *)specificDate {
// 此處600代表600秒,如果需要獲取之前的,將600改為-600即可
// 類似的方法 [[NSDate alloc]initWithTimeIntervalSinceNow:60];
// [[NSDate alloc]initWithTimeIntervalSince1970:600];
NSDate *date = [self currentDate];
return [[NSDate alloc] initWithTimeInterval:600 sinceDate:date];
}
3. 按照一定的格式獲得當(dāng)前的時間(NSString):
+ (NSString *)currentString {
NSDateFormatter *dateFormatter =[[NSDateFormatter alloc] init];
// 設(shè)置時區(qū)
dateFormatter.timeZone = [NSTimeZone systemTimeZone];
// 設(shè)置日期格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *dateString = [dateFormatter stringFromDate:[NSDate date]];
return dateString;
}
4. 獲得當(dāng)前時間的時間戳(NSInteger):
+ (NSInteger)currentTimeStamp {
NSInteger timeStamp = [[self currentDate] timeIntervalSince1970];
return timeStamp;
}
5. 時間戳轉(zhuǎn)化為時間(NSInteger --> NSDate):
+(NSDate *)timeStampChangeToDate:(NSInteger)timeStamp {
NSDate* date = [NSDate dateWithTimeIntervalSince1970:timeStamp];
return date;
}
6. 時間轉(zhuǎn)化為時間戳(NSDate --> NSInteger):
+ (NSInteger)dateChangeToTimestamp:(NSDate *)date {
NSInteger timeStamp = [date timeIntervalSince1970];
return timeStamp;
}
7. 格式化的時間轉(zhuǎn)化為時間戳
- (NSString *)dateChangeTime:(NSString *)dateString {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
formatter.dateFormat = @"yyyy年MM月dd日";
NSDate *createDate = [formatter dateFromString:dateString];
NSTimeInterval a=[createDate timeIntervalSince1970]*1000; // *1000 是精確到毫秒,不乘就是精確到秒
NSString *timeString = [NSString stringWithFormat:@"%.0f", a];
return timeString;
}
PS:這樣獲取的時間戳并不是某一時刻的時間戳, 應(yīng)該是dd日零點的, 希望大家指出錯誤
8. 獲得某一時間為星期幾(NSDate --> NSString):
+ (NSString *)getWeekDayByDate:(NSDate *)date{
NSCalendar *calendar = [NSCalendar currentCalendar];
//NSDateComponents *weekComp = [calendar components:NSWeekdayCalendarUnit fromDate:date];
NSDateComponents *weekComp = [calendar components:NSCalendarUnitWeekday fromDate:date];
NSInteger weekDayEnum = [weekComp weekday];
NSString *weekDays = nil;
switch (weekDayEnum) {
case 1:
weekDays = @"星期日";
break;
case 2:
weekDays = @"星期一";
break;
case 3:
weekDays = @"星期二";
break;
case 4:
weekDays = @"星期三";
break;
case 5:
weekDays = @"星期四";
break;
case 6:
weekDays = @"星期五";
break;
case 7:
weekDays = @"星期六";
break;
default:
break;
}
return weekDays;
}
9. 時間轉(zhuǎn)化為農(nóng)歷表示(NSDate --> NSString):
+(NSString*)getChineseCalendarWithDate:(NSDate *)date{
NSArray *chineseYears = [NSArray arrayWithObjects:
@"甲子", @"乙丑", @"丙寅", @"丁卯",? @"戊辰",? @"己巳",? @"庚午",? @"辛未",? @"壬申",? @"癸酉",
@"甲戌",? @"乙亥",? @"丙子",? @"丁丑", @"戊寅",? @"己卯",? @"庚辰",? @"辛己",? @"壬午",? @"癸未",
@"甲申",? @"乙酉",? @"丙戌",? @"丁亥",? @"戊子",? @"己丑",? @"庚寅",? @"辛卯",? @"壬辰",? @"癸巳",
@"甲午",? @"乙未",? @"丙申",? @"丁酉",? @"戊戌",? @"己亥",? @"庚子",? @"辛丑",? @"壬寅",? @"癸丑",
@"甲辰",? @"乙巳",? @"丙午",? @"丁未",? @"戊申",? @"己酉",? @"庚戌",? @"辛亥",? @"壬子",? @"癸丑",
@"甲寅",? @"乙卯",? @"丙辰",? @"丁巳",? @"戊午",? @"己未",? @"庚申",? @"辛酉",? @"壬戌",? @"癸亥", nil];
NSArray *chineseMonths=[NSArray arrayWithObjects:
@"正月", @"二月", @"三月", @"四月", @"五月", @"六月", @"七月", @"八月",
@"九月", @"十月", @"冬月", @"臘月", nil];
NSArray *chineseDays=[NSArray arrayWithObjects:
@"初一", @"初二", @"初三", @"初四", @"初五", @"初六", @"初七", @"初八", @"初九", @"初十",
@"十一", @"十二", @"十三", @"十四", @"十五", @"十六", @"十七", @"十八", @"十九", @"二十",
@"廿一", @"廿二", @"廿三", @"廿四", @"廿五", @"廿六", @"廿七", @"廿八", @"廿九", @"三十",? nil];
NSCalendar *localeCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSChineseCalendar];
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |? NSDayCalendarUnit;
NSDateComponents *localeComp = [localeCalendar components:unitFlags fromDate:date];
NSLog(@"%zi_%zi_%zi? %@",localeComp.year,localeComp.month,localeComp.day, localeComp.date);
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: @"農(nóng)歷:%@年%@%@",y_str,m_str,d_str];
return chineseCal_str;
}