gpt4 book ai didi

ios - NSDate 在一个月的第一天返回错误的日期

转载 作者:可可西里 更新时间:2023-11-01 04:48:54 29 4
gpt4 key购买 nike

我的应用程序使用 [NSDate date ] 函数来获取当前日期。除了每个月的 1 日上午之外,它在其他日子都可以正常工作。即遵循以下步骤:

  1. 将系统日期设置为 2011 年 6 月 1 日,时间介于午夜 00 点到凌晨 5 点 59 分之间。
  2. 使用以下代码:
    NSLog(@"Current Date::%@",[NSDate date]);

O/P 是:: 当前日期::2011-05-31 19:40:21 +0000

期望的 O/P 是:: 当前日期::2011-06-01 00:00:0(即设置的时间)+0000

同样从早上 6 点开始,它工作正常。

这是什么原因?

实际上我不想要字符串格式的 NSDate,但我想要的是对应于当月第一个日期的 NSDate 日期对象。为此,我使用以下代码片段:

NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];

NSDateComponents *comp = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit
| NSDayCalendarUnit) fromDate:[NSDatedate]];

[comp setDay:1];

NSDate *firstDayOfMonthDate = [gregorian dateFromComponents:comp];

[gregorian release];

return firstDayOfMonthDate;

由于 [NSDate date] 返回错误的日期,组件也包含错误的日期。上面的代码适用于所有 senario,除了我在该线程开头发布的 senario。我应该怎么办?

最佳答案

终于得到解决方案:

重点是,NSDate 对象没有与之相关联的时区,Apple 的一些人决定应该使用 NSDate 的 -description 方法,这是 NSLog 使用的方法GMT+0 而不是输出的本地时区。 (我假设有人有一个错误,他们破坏了他们的语言环境设置,这导致 NSDate 的 -description 方法崩溃,所以错误报告被归档......)

简短版本:使用 NSDateFormatter 输出日期。不要使用 -description

关于ios - NSDate 在一个月的第一天返回错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6596471/

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