gpt4 book ai didi

ios - 为什么我在正确的时区得到错误的时间输出?

转载 作者:可可西里 更新时间:2023-11-01 05:04:42 25 4
gpt4 key购买 nike

为什么我得到这个输出时间:

2013-01-12 18:24:37.783 代码测试[10328:c07] 0001-01-01 17:12:52 +0000

当我运行这段代码时:

NSCalendar *calendar = [NSCalendar currentCalendar];
calendar.timeZone = [NSTimeZone localTimeZone];

NSDateComponents *components = [calendar components:NSHourCalendarUnit fromDate:[NSDate date]];
components.hour = 17;
components.minute = 47;
components.second = 0;

NSDate *fire = [calendar dateFromComponents:components];
NSLog(@"%@", fire);

我试过默认时区,系统时区。它总是给我一个不同分钟和秒的输出!加上错误的日期 0001-01-01!!!!知道为什么吗?

附加测试:

运行这段代码时:

NSCalendar *calendar = [NSCalendar currentCalendar];
calendar.timeZone = [NSTimeZone localTimeZone];
NSDateComponents *components = [calendar components:NSHourCalendarUnit fromDate:[NSDate date]];
components.hour = (components.hour + 1) % 24;
components.minute = 0;
components.second = 0;
NSDate *fire = [calendar dateFromComponents:components];
NSLog(@"%@", fire);

它给了我这个输出:

2013-01-12 18:41:41.552 代码测试[10648:c07] 0001-01-01 18:25:52 +0000

2013-01-12 18:42:16.274 代码测试[10648:c07] 0001-01-01 18:25:52 +0000

2013-01-12 18:42:30.310 代码测试[10648:c07] 0001-01-01 18:25:52 +0000

最佳答案

您缺少年、月和日组件。

做:

NSDateComponents *components = [calendar components:NSUIntegerMax fromDate:[NSDate date]];

现在应该给你正确的日期。

旁注:由于 NSCalendarUnitNSUInteger 的位域类型定义,我传入 NSUIntegerMax 以检索所有可能的日历单位。这样我就不必有大量的按位或语句。

关于ios - 为什么我在正确的时区得到错误的时间输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14296135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com