NSDateComponents 返回 nil

发布于 2024-10-19 05:08:37 字数 511 浏览 2 评论 0原文

我试图获取一个 NSDate 对象,其中小时、分钟和秒初始化为 0。 我使用下面的代码来获取它,但由于某种原因我从 [NSDateComponents date] 得到 nil。 我的代码有什么问题吗?

NSCalendar *gregorian = [[[NSCalendar alloc]
                          initWithCalendarIdentifier:NSGregorianCalendar] autorelease];

NSDate *now = [[[NSDate alloc] init] autorelease];
NSDateComponents *nowDc = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit) 
        fromDate:now];
// this returns nil!
NSDate *todayStart = [nowDc date];

I'm trying to get an NSDate object with the hour, minute, and second initialized to 0.
I'm using the code below to get it, but for some reason I get nil from [NSDateComponents date].
What's wrong with my code?

NSCalendar *gregorian = [[[NSCalendar alloc]
                          initWithCalendarIdentifier:NSGregorianCalendar] autorelease];

NSDate *now = [[[NSDate alloc] init] autorelease];
NSDateComponents *nowDc = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit) 
        fromDate:now];
// this returns nil!
NSDate *todayStart = [nowDc date];

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

以往的大感动 2024-10-26 05:08:37

当您从日历实例获取组件时,不会设置 NSDateComponents 实例的日历。

但是您必须先设置日历才能使用[组件日期],因为没有日历就没有日期。

因此尝试添加 [nowDc setCalendar:gregorian];

When you get the components from a calendar instance the calendar of the NSDateComponents instance is not set.

But you have to set the calendar before you can use [components date], because without calendar there is no date.

So try to add [nowDc setCalendar:gregorian];

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文