gpt4 book ai didi

objective-c - NSDateComponents 问题 - 日期不正确

转载 作者:太空狗 更新时间:2023-10-30 03:59:43 26 4
gpt4 key购买 nike

我有一个 NSDateComponents 问题。我有两个 NSDates,我试图通过检查它们的年、月和日是否匹配来进行比较。我这样做是通过将 NSDate 值转换为这些整数组件,如下所示:

//NSDate *cgiDate is previously set to 2011-08-04 00:00:00 +0000 
//NSDate *orderDate is previously set to 2011-08-04 14:49:02 +0000
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *cgiDateComponents = [calendar components:( NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit ) fromDate:cgiDate];
NSCalendar *orderCalendar = [NSCalendar currentCalendar];
NSDateComponents *orderDateComponents = [orderCalendar components:( NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit ) fromDate:orderDate];
if (([cgiDateComponents day] == [orderDateComponents day]) &&
([cgiDateComponents month] == [orderDateComponents month]) &&
([cgiDateComponents year] == [orderDateComponents year])) {
GHTestLog(@"MATCHED");
} else {
GHTestLog(@"Not matched");
GHTestLog(@"Day: %d vs. %d", [cgiDateComponents day], [orderDateComponents day]);
}

我的结果不匹配,第 3 天与第 4 天。为什么会这样?

我非常感兴趣地阅读了以下问题: NSDateComponents - day method returning wrong dayhttps://stackoverflow.com/questions/3920445/nsdatecomponents-incorrectly-reporting-day但是都没有回答我为什么这不起作用的问题。

有什么建议吗?

最佳答案

我认为问题如下:您的日期设置为 GMT 时区 (+0000)如果您在美国,例如在 GTM-6,那么根据 -currentCalendar,第一个日期将是 8 月 3 日下午 6 点,而第二个日期将是 8 月 4 日上午 8:49。

您应该强制您的日历使用 UTC (GMT) 时区,或者将日期放在您的时区中,具体取决于您的应用程序的正确性。

关于objective-c - NSDateComponents 问题 - 日期不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6947799/

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