关于NSDate的那些事儿
@interface ViewController ()
{
NSString *_dateString;//时间戳
}
@end
- (void)viewDidLoad {
[super viewDidLoad];
//1.获取到当前时区的当前时间
[self getCurrentDateOfLocalZone];
//2.获取当前时间戳
//时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数
[self getCurrentDateString];
//3.根据时间戳转换成对应的日期和时间
[self accordingDateStringTranslatedCurrentDate];
}
- (void)getCurrentDateOfLocalZone {
NSDate *date = [NSDate date];
//初始化时间显示格式
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//给时间格式设置时区
NSTimeZone *zone = [NSTimeZone localTimeZone];
[dateFormatter setTimeZone:zone];
[dateFormatter setDateFormat:@"YYYY:MM:dd-HH:mm:ss"];
NSString *timeString = [dateFormatter stringFromDate:date];
NSLog(@"当前时间=%@",timeString);
}
- (void)getCurrentDateString {
//时区
//NSTimeZone *zone = [NSTimeZone localTimeZone];
//当前时区和格林威治时区的时间差 8小时
//NSTimeInterval timeInterval = [zone secondsFromGMTForDate:[NSDate date]];
//格林威治时间到现在的秒数
NSString *sumString = [NSString stringWithFormat:@"%f",[[NSDate date] timeIntervalSince1970]];
//截取小数点前的数
NSString *dateString = [[sumString componentsSeparatedByString:@"."] objectAtIndex:0];
//获取到时间戳
_dateString = dateString;
NSLog(@"时间戳=%@",dateString);
NSLog(@"sumString=%@",sumString);
}
- (void)accordingDateStringTranslatedCurrentDate {
//把时间戳转化为日期
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[_dateString intValue]];
//时间格式
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//时区
NSTimeZone *zone = [NSTimeZone localTimeZone];
[dateFormatter setTimeZone:zone];
[dateFormatter setDateFormat:@"yyyy:MM:dd-HH:mm:ss"];
NSString *currentDate = [dateFormatter stringFromDate:date];
NSLog(@"根据时间戳转换为日期和时间=%@",currentDate);
}
NSDateFormatter的格式介绍
G -- 纪元
一般会显示公元前(BC)和公元(AD)
y -- 年
假如是2013年,那么yyyy=2013,yy=13
M -- 月
假如是3月,那么M=3,MM=03,MMM=Mar,MMMM=March
假如是11月,那么M=11,MM=11,MMM=Nov,MMMM=November
w -- 年包含的周
假如是1月8日,那么w=2(这一年的第二个周)
W -- 月份包含的周(与日历排列有关)
假如是2013年4月21日,那么W=4(这个月的第四个周)
F -- 月份包含的周(与日历排列无关)
和上面的W不一样,F只是单纯以7天为一个单位来统计周,例如7号一定是第一个周,15号一定是第三个周,与日历排列无关。
D -- 年包含的天数
假如是1月20日,那么D=20(这一年的第20天)
假如是2月25日,那么D=31+25=56(这一年的第56天)
d -- 月份包含的天数
假如是5号,那么d=5,dd=05
假如是15号,那么d=15,dd=15
E -- 星期
假如是星期五,那么E=Fri,EEEE=Friday
a -- 上午(AM)/下午(PM)
H -- 24小时制,显示为0--23
假如是午夜00:40,那么H=0:40,HH=00:40
h -- 12小时制,显示为1--12
假如是午夜00:40,那么h=12:40
K -- 12小时制,显示为0--11
假如是午夜00:40,那么K=0:40,KK=00:40
k -- 24小时制,显示为1--24
假如是午夜00:40,那么k=24:40
m -- 分钟
假如是5分钟,那么m=5,mm=05
假如是45分钟,那么m=45,mm=45
s -- 秒
假如是5秒钟,那么s=5,ss=05
假如是45秒钟,那么s=45,ss=45
S -- 毫秒
一般用SSS来显示
z -- 时区
表现形式为GMT+08:00
Z -- 时区
表现形式为+0800