Objective c 有人能解释为什么捕获的[NSDate]时间比系统时间晚39分钟吗?

Objective c 有人能解释为什么捕获的[NSDate]时间比系统时间晚39分钟吗?,objective-c,xcode,unit-testing,nsdate,xctest,Objective C,Xcode,Unit Testing,Nsdate,Xctest,在Xcode 12中的一个单元测试中,我有以下代码片段: NSDate *timestamp = [NSDate date]; NSDateFormatter *timestampFormatter = [[NSDateFormatter alloc] init]; [timestampFormatter setDateFormat:@"YYYY-MM-dd 'at' HH:MM:ss.SSSXXXXX"]; NSLog(@">

在Xcode 12中的一个单元测试中,我有以下代码片段:

    NSDate *timestamp = [NSDate date];
    NSDateFormatter *timestampFormatter = [[NSDateFormatter alloc] init];
    [timestampFormatter setDateFormat:@"YYYY-MM-dd 'at' HH:MM:ss.SSSXXXXX"];
    NSLog(@">>>>> Timestamp: %@", [timestampFormatter stringFromDate:timestamp]);
我得到的单元测试输出如下:

2021-03-26 16:42:32.109836-0700 xctest[23961:1430979]>>>>>>>>时间戳:2021-03-26 16:03:32.110-07:00

请注意捕获的时间戳与输出行的时间戳有多么不同! 输出行的时间戳确实与当前系统时间相关,而捕获的时间戳大约落后39分钟。整个代码段的运行时间为亚秒:)

捕获的时间戳大约落后39分钟

不,不是。这是显示时间戳的方式。问题在于,格式的第二部分,
HH:MM:ss.sssxxx
,意思是“显示小时、月和秒”。这可能不是您想要的

因此,当它是16:42:32时,您会看到格式化程序发出的
“16:03:32”
,因为月份是
03