IOS日期的处理

一、先定义一个全局变量的NSTimeInterval

@interface ViewController ()
{
    NSTimeInterval timeInterVal;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    timeInterVal = 8*60*60;
    [self createDateObject];
}

获取世界标准时间,比中国时间早八个小时

1  NSDate *date = [NSDate date];
2     NSLog(@"%@",date);

 从现在世界标准的时间 往后推timeInterVal后的时间(如果timeInterVal是负数就是往前推)

 NSDate *sinceNowDate = [NSDate dateWithTimeIntervalSinceNow:timeInterVal];
    NSLog(@"%@",sinceNowDate);

计算机时间1970-01-01 00:00:00 往后退timeInterVal八小时后的时间(为负数则往前)

 

 NSDate *since1970 = [NSDate dateWithTimeIntervalSince1970:timeInterVal];
    NSLog(@"%@",since1970);

 

  从自定义的时间往后推八个小时 date是自定义的时间  timeInterVal是推迟的时间

NSDate *sinceCustomDate = [NSDate dateWithTimeInterval:timeInterVal sinceDate:date];
    NSLog(@"%@",sinceCustomDate);

 从2001-01-01 00:00:00 开始往后推八个小时

 NSDate *since2001 = [NSDate dateWithTimeIntervalSinceReferenceDate:timeInterVal];
    NSLog(@"%@",since2001);

 永远不可能达到的一个时间点

  NSDate *futureDate = [NSDate distantFuture];
    NSLog(@"%@",futureDate);

一个无限过去的时间点

 NSDate *pastDate = [NSDate distantPast];
    NSLog(@"%@",pastDate);

二、时间差计算

从计算机时间1970-01-01 00:00:00到date日期的时间差

 NSLog(@"%f",date.timeIntervalSince1970);

从计算机时间2001-01-01 00:00:00到newDate日期的时间差

NSDate *newDate = [NSDate date];
NSLog(@"%f",newDate.timeIntervalSinceReferenceDate);

从当前时间到newDate的时间差

NSLog(@"%f",newDate.timeIntervalSinceNow);

 已知两个时间戳  比较两个日期的早晚

   1451047216     1451847216

 NSDate *oneDate = [NSDate dateWithTimeIntervalSince1970:1451047216];
    NSDate *anotherDate = [NSDate dateWithTimeIntervalSince1970:1451847216];
    NSDate *earlyDate = [oneDate earlierDate:anotherDate];
    NSLog(@"较早的:%@",earlyDate);
    NSDate *laterDate = [oneDate laterDate:anotherDate];
    NSLog(@"较晚的日期:%@",laterDate);
    
//    获得两个日期的时间差
    NSTimeInterval timer = [oneDate timeIntervalSinceDate:anotherDate];
    NSLog(@"%f",timer);

三、日期格式器

 y  年
     M  年中的月份
     D  当天是今年的第多少天
     d  月份中的天数
     F  月份中的周数
     E  星期几
     a  Am/pm
     H  一天中的小时数(0-23)
     k  一天中的小时数(1-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

 

//    日期格式器
    NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
    formatter.dateFormat = @"yyyy-MM-dd hh:mm:ss";
//
    NSString *dateString = [formatter stringFromDate:date];
    NSLog(@"%@",dateString);
    
//    把字符串转换成日期
    NSDate *stringDate = [formatter dateFromString:dateString];
    NSLog(@"%@",stringDate);

 

注意:在实际项目中

如果你用的时间戳是后台给你传过来的话,要记得核查是否该时间戳是否乘以1000。根据情况来决定是否除以1000。如果乘以过1000,表明后台给你传过来的是毫秒。 

 

posted @ 2016-01-17 11:42  My_blogs龙  阅读(359)  评论(0编辑  收藏  举报