使用 NSCalendar 检索该月的第一天

发布于 2024-11-05 19:02:37 字数 468 浏览 0 评论 0原文

我执行以下代码片段:

NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comp = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]]; 
[comp setDay:1]; 

NSDate *firstDayOfMonthDate = [gregorian dateFromComponents:comp];

firstDayOfMonthDate 的值是 = 30-4-2011 但例外是 1-5-2011 即我想要任何指定日期的月份的第一个日期。 但它给了我上个月的最后一个日期。

提前致谢。

I execute following snippet of code:

NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *comp = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:[NSDate date]]; 
[comp setDay:1]; 

NSDate *firstDayOfMonthDate = [gregorian dateFromComponents:comp];

The Value of firstDayOfMonthDate is = 30-4-2011 but excpeted is 1-5-2011 i.e I want first date of month of any specified date.
But it gives me the last date of the previous month.

thanks in advance.

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

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

发布评论

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

评论(1

梦境 2024-11-12 19:02:37

添加

[gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];

初始化 NSCalendar 后

[NSDate date] 将返回 UTC 时区的日期,以及自 2001 年 1 月 1 日 00:00 GMT 以来的绝对间隔,但 NSCalendar 的时区设置为默认时区,可能不是 UTC 。

UTC 与 UTC “相同”,引用自维基百科:

在随意使用时,当 a 的分数
第二个并不重要,格林威治
可以考虑平均时间(GMT)
相当于 UTC 或 UT1。说“格林威治标准时间”
通常意味着 UTC 或 UT1
用于非正式或休闲场合
上下文。在技​​术背景下,使用
避免使用“GMT”;明确的
术语“UTC”或“UT1”是
首选。[3]

Add

[gregorian setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];

after initializing your NSCalendar.

[NSDate date] will return a date in the UTC timezone, well an absolute interval since January 1, 2001 00:00 GMT, but the NSCalendar has its timeZone set to the default timezone which may not be UTC.

UTC is the "same" as UTC, a quote from wikipedia:

In casual use, when fractions of a
second are not important, Greenwich
Mean Time (GMT) can be considered
equivalent to UTC or UT1. Saying "GMT"
often implies either UTC or UT1 when
used within informal or casual
contexts. In technical contexts, usage
of "GMT" is avoided; the unambiguous
terminology "UTC" or "UT1" is
preferred.[3]

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