当我将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
答案 0 :(得分:-1)
设置日期格式化程序,如下所示
this