NSDate和时间戳,以及比较两个时间

主要说获取当前时间,以及比较两个完整时间的大小

获取当前时间

说明:

  • NSString获取的时间是当前时区的时间
  • NSDate new 获取到的时间,为格林威治时间,下列是打印出来的日志
2016-04-27 22:14:19.128 NLPayment_V2[15634:612505] NSString 当前时间  =2016-04-27 22:14:19
2016-04-27 22:14:19.128 NLPayment_V2[15634:612505] NSDate当前时间 =2016-04-27 14:14:19 +0000
  • NSString类型的当前时间
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *dateTime = [formatter stringFromDate:[NSDate date]];
NSLog(@"当前时间  =%@",dateTime);
  • NSDate的当前时间
NSLog(@"当前时间  =%@",[NSDate new]);

比较两个完整的时间

  • 调用的实例说明:实际交易中的退货操作,要将退货时间当前时间作对比,当前时间必须在交易时间后的至少一个工作日。
  • 比较思想:获取交易时间,然后把交易时间的时,分,秒替换成23:59:59
  • 然后利用 [DateA timeIntervalSinceDate: DateB] < 0.0f 来作判断
    • [DateA timeIntervalSinceDate: DateB] < 0.0f 表示 DateA - DateB < 0
//判断退货时间是否为当天
- (BOOL)judgeRefundDateIsToday:(NSString *)transactionDateStr {
    //2016-04-27 16:35:21
    NSMutableString *lateDate = [NSMutableString new];
    [lateDate appendString:[transactionDateStr substringToIndex:10]];
    NSLog(@"%@", lateDate);
    [lateDate appendString:@" 23:59:59"];
    NSLog(@"%@", lateDate);
    
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"]; //指定当前时区
    [dateFormatter setTimeZone:timeZone];
    //将当前的时区时间String再转成标准的NSDate,转换后的时间是为格林威治时间,这样统一标准后才能用 timeIntervalSinceData比较
    NSDate *date = [dateFormatter dateFromString:lateDate];
    NSLog(@"%@", date);
    
    NSLog(@"当前日期= %@",[NSDate new]);
    
    if ([[NSDate new] timeIntervalSinceDate:date] < 0.0f) {
        XLog(@"当天内退货");
        return YES;
    } else {
        XLog(@"当日后退货");
        return NO;
    }
}

你可能感兴趣的:(NSDate和时间戳,以及比较两个时间)