这里是关于处理日期的常用一些方法:
//1. 创建日期对象 获得的永远是0时区时间,如果要是东八区时间,就加8个小时
NSDate *dateNow = [NSDate date];
//2. 日期格式化类
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
//3. 日期格式(固定写法)
formatter.dateFormat = @"yyy-MM-dd HH:mm:ss";
//4. 将日期格式化成字符串对象
NSString *str = [formatter stringFromDate:dateNow];
NSLog(@"%@", str);
//5. 明天
NSDate *date1 = [dateNow dateByAddingTimeInterval:24*60*60];
NSLog(@"%@", date1);
//6. 昨天
NSDate *date2 = [dateNow dateByAddingTimeInterval:-24*60*60];
NSLog(@"%@", date2);
//NSDateFormatter:这个类是用来处理日期与字符串之间转换的方法
//7. 获取并设置时间时区,获取系统时区
NSTimeZone *currentTimezone = [NSTimeZone systemTimeZone];
[formatter setTimeZone:currentTimezone];
[formatter setDateFormat:@"yyy-MM-dd HH:mm:ss EEEE"];
NSLog(@"%@", [formatter stringFromDate:dateNow]);
//8. ----------------------------计算程序所用时间--------------------------------------------
NSMutableArray *array = [NSMutableArray array];
for (int i = 0; i < 10000; i++) {
int r = arc4random();
[array addObject:[NSString stringWithFormat:@"%d", r]];
}
NSDate *startTime = [NSDate date];//记录开始时间
//系统所写排序
[array sortUsingSelector:@selector(compare:)];
//手写冒泡
// for (int i = 0; i < [array count] - 1; i++) {
// for (int j = 0; j < [array count] - 1 - i; j++) {
// if ([[array objectAtIndex:j] compare:[array objectAtIndex:j + 1]] == 1) {
// [array exchangeObjectAtIndex:j withObjectAtIndex:j + 1];
// }
// }
// }
NSDate *endTime = [NSDate date];//记录结束时间
NSTimeInterval usedTime = [endTime timeIntervalSinceDate:startTime];//计算时间间隔
NSLog(@"所用时间:%f秒", usedTime);
//---------------------------------------------------------------------------------
//9. 距离现在的某段时间后
NSDate *dateAfterNow = [dateNow dateByAddingTimeInterval:10]; //在此时的过10分钟
NSLog(@"%@", dateAfterNow);
//计算当前时间和一个固定时间的差值,如果差值在60秒内,输出“刚刚”,如果在60秒外3600秒内,输出“xx分钟前”,如果3600秒外,3600*24秒内,输出“xx小时前”(随机获得0-255的数)
//10. 随机创建一个date对象
NSDate *randomDate = [NSDate dateWithTimeIntervalSinceNow:arc4random()%(3600*24)];
//11. 获取randomDate和当前时间的时间差
NSTimeInterval time = [randomDate timeIntervalSinceNow];
NSLog(@"%f",time);
if(time <60){
NSLog(@"刚刚");
}else if (time<3600){
int minute = time/60;
NSLog(@"%d分钟前",minute);
}else if (time<3600*24){
int hour = time/3600;
NSLog(@"%d小时前",hour);
}
//12. 将日期转换成字符串再输出
//设置自定义日期格式
[formatter setDateFormat:@"yy/MM/dd HH:mm:ss"];
[formatter setDateFormat:@"yy yyy yyyy mm MM dd DD HH hh SS ss"];
//[formatter setDateFormat:@"yy/MM/dd HH:mm:ss"];
NSString *dateString = [formatter stringFromDate:dateNow];
NSLog(@"%@",dateString);
//日期格式如下
// y 年 Year 1996; 96
// M 年中的月份 Month July; Jul; 07
// w 年中的周数 Number 27
// W 月份中的周数 Number 2
// D 年中的天数 Number 189
// d 月份中的天数 Number 10
// F 月份中的星期 Number 2
// E 星期中的天数 Text Tuesday; Tue
// a Am/pm 标记 Text PM
// H 一天中的小时数(0-23) Number 0
// k 一天中的小时数(1-24) Number 24
// K am/pm 中的小时数(0-11) Number 0
// h am/pm 中的小时数(1-12) Number 12
// m 小时中的分钟数 Number 30
// s 分钟中的秒数 Number 55
// S 毫秒数 Number 978
// z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
// Z 时区 RFC 822 time zone -0800