gpt4 book ai didi

ios - 获取日期组件中的当前月份日期

转载 作者:行者123 更新时间:2023-12-01 15:52:16 35 4
gpt4 key购买 nike

我正在获取日期为 2018-06-01 00:00:00 +0000 的 NSDateComponents

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth|NSCalendarUnitYear |NSCalendarUnitHour | NSCalendarUnitMinute fromDate:date];
[components setTimeZone:[NSTimeZone timeZoneWithAbbreviation: @"UTC"]];
NSInteger month =[components month];

当我打印 components 的值时,我得到了这个值。

    TimeZone: GMT (GMT) offset 0
Calendar Year: 2018
Month: 5
Leap month: no
Day: 31
Hour: 21
Minute: 0

我的预期输出应该是

    TimeZone: GMT (GMT) offset 0
Calendar Year: 2018
Month: 6
Leap month: no
Day: 1
Hour: 0
Minute: 0

如何正确获取月的值?

最佳答案

当您使用 NSCalendar components:fromDate: 时,结果基于日历的当前时区,默认为用户的本地时区。

您尝试设置结果组件的 timeZone 不会改变当前组件。如果您使用组件创建新的 NSDate,那只会影响组件的解释方式。

假设您的目标是获取 UTC 时间而不是本地时间的 date 的组成部分,那么您需要在从 日期

NSDate *date = // your date
NSCalendar *calendar = NSCalendar.currentCalendar;
calendar.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"UTC"];
NSDateComponents *components = [calendar components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear | NSCalendarUnitHour | NSCalendarUnitMinute fromDate:date];
NSLog(@"UTC Components: %@", components);

但请记住,您必须了解您真正想要的时区。确保您确实需要 UTC 时区。不要仅仅因为它匹配 NSLog(@"Date: %@", date); 的输出就使用 UTC。该日志以 UTC 时间显示日期。

关于ios - 获取日期组件中的当前月份日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51207356/

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