关于NSDate的那些事儿

2018-04-18  本文已影响0人  YJLJianShu
@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

上一篇下一篇

猜你喜欢

热点阅读