NSDate是否改变了它的描述输出?

时间:2017-11-17 09:56:03

标签: ios objective-c nsdate ios11 nslog

当我将NSDate记录到控制台时,如下所示:

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

记录输出:

  

日期:星期五11月17日09:35:27

我期待输出更像这样:

  

日期:2017-11-17 09:35:27 +0000

很长一段时间[NSDate description]将日期作为字符串返回到GMT时区,无论机器的时区设置为什么。现在,当您更改机器的时区时输出会发生变化(尽管它不打印它所使用的时区)。

我疯了吗?输出是否与以前不同?将部署目标设置为较早的OS对输出没有影响。如果它有所不同,它什么时候改变了?有记录吗?

修改:CFDate仍然提供旧说明:

CFAbsoluteTime      absTime;
CFDateRef           aCFDate;
absTime = CFAbsoluteTimeGetCurrent();
aCFDate = CFDateCreate(kCFAllocatorDefault, absTime);
CFStringRef dateDescription = CFCopyDescription(aCFDate);
NSString *description = (__bridge NSString *)dateDescription;
NSLog(@"%@", description);
  

2017-11-17 10:50:19 +0000

另一个编辑(Xcode版本9.2):

Objective-C具有不同的输出,具体取决于日志的记录方式:

NSDate *date = [NSDate date];
NSLog(@"date: %@", date);
NSLog(@"date: %@", date.description);
NSLog(@"date: %@", date.debugDescription);
  

日期:1月23日星期二02:19:29 201   日期:2018-01-23 10:19:29 +0000
  日期:2018-01-23 10:19:29 +0000

我原以为直接记录对象与记录description

相同

斯威夫特有旧行为:

let now = Date()
print("\(now)")
print("\(now.description)")
print("\(now.debugDescription)")
  

2018-01-23 10:19:00 +0000
  2018-01-23 10:19:00 +0000
  2018-01-23 10:19:00 +0000

1 个答案:

答案 0 :(得分:-1)

设置日期格式化程序,如下所示



this