ObjectiveC(14)_NSDate
程序员文章站
2024-01-15 19:00:46
...
NSDate
常用方法
- 获取系统当前时间
// 获取系统当前时间,获取的是格林威治0时区的时间,中国北京是东8区,要加上8才是北京时间
NSDate *date = [NSDate date];
NSDate *date1 = [NSDate new];
NSLog(@"获取系统当前时间:%@",date);
NSLog(@"获取系统当前时间:%@",date1);
- 格式化日期
NSDateFormatter *dateFormatter = [NSDateFormatter new];
[dateFormatter setDateFormat:@"yyyy年MM月dd日 HH时mm分ss秒"];//HH表示24小时制,hh表示12小时制
NSString *dateStr = [dateFormatter stringFromDate:date];
NSLog(@"当前日期的格式化后的值:%@",dateStr);
// 分别获取日期的年、月、日、时、分、秒
[dateFormatter setDateFormat:@"yyyy"];
NSString *year = [dateFormatter stringFromDate:date];
NSLog(@"年:%@",year);
[dateFormatter setDateFormat:@"MM"];
NSString *month = [dateFormatter stringFromDate:date];
NSLog(@"月:%@",month);
[dateFormatter setDateFormat:@"dd"];
NSString *day= [dateFormatter stringFromDate:date];
NSLog(@"日:%@",day);
[dateFormatter setDateFormat:@"HH"];
NSString *hour = [dateFormatter stringFromDate:date];
NSLog(@"时:%@",year);
[dateFormatter setDateFormat:@"mm"];
NSString *min = [dateFormatter stringFromDate:date];
NSLog(@"分:%@",min);
[dateFormatter setDateFormat:@"ss"];
NSString *second= [dateFormatter stringFromDate:date];
NSLog(@"秒:%@",second);
- 将字符串转成日期对象
NSDate *date2 = [dateFormatter dateFromString:dateStr];
NSLog(@"当字符串转换成日期对象:%@",date2);
- 在当前时间上新增指定的秒,得到新的时间对象
// 在当前时间上新增指定的秒,得到新的时间对象,例如得到东八区北京时间
NSDate *bjDate = [NSDate dateWithTimeIntervalSinceNow:8*60*60];
NSLog(@"北京当前时间是:%@",bjDate);
// 一小时之前,用负数表示
NSDate *oldDate = [NSDate dateWithTimeIntervalSinceNow:-3600];
NSLog(@"一小时之前是:%@",oldDate);
- 计算两个时间差值
NSDate *starTime = [NSDate new]; // 开始时间
NSString * str;
for (int i = 0; i< 50000; i++) {
str = [str stringByAppendingFormat:@"%@%d",str,i];
}
NSDate *endTime = [NSDate date]; // 结束时间
double diffTime = [endTime timeIntervalSinceDate:starTime]; // 时间相差
NSLog(@"时间差计算:%lf",diffTime);
- 使用日历从date中取出年月日星期
NSCalendar *calendar = [NSCalendar currentCalendar];// 单例模式
NSDateComponents *dateCom = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitWeekday fromDate:date];
NSLog(@"%ld-%ld-%ld 星期%ld",dateCom.year,dateCom.month,dateCom.day,dateCom.weekday-1);// 星期要减1
通过使用Category
来扩展日期方法
- 创建
NSDate+itcast.h
#import <Foundation/Foundation.h>
@interface NSDate (itcast)
@property(nonatomic,assign,readonly)int year;
@end
- 创建
NSDate+itcast.m
#import "NSDate+itcast.h"
@implementation NSDate (itcast)
// 定义属性
- (int) year
{
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *dateCom = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitWeekday fromDate:self];
return (int)dateCom.year;
}
@end
- 使用
#import <Foundation/Foundation.h>
#import "NSDate+itcast.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 通过Category创建日期扩展方法
NSLog(@"年:%d",date.year);
}
return 0;
}