【问题标题】:How to get actual first day of the month, possible with my time zone?如何在我的时区获得实际的当月第一天?
【发布时间】:2015-05-08 08:14:16
【问题描述】:

我正在尝试获取本月的第一天,但​​获取的是 UTC 值。我想我需要我的语言环境日期?

【问题讨论】:

  • NSDate 始终采用 UTC。如果你想得到一个其他时区的字符串,这里的答案是stackoverflow.com/questions/14592556/…
  • @Artrmz 感谢您的评论,我真的需要这个作为约会。不知道在这里做什么。
  • 你需要这个做什么?它向您显示比该月的第一天早 1 小时的日期,因为您可能生活在 +1 时区。一旦你在设备上运行它,它应该会在日历中显示正确的日期。
  • @Artrmz 我的时区是模拟器中的英国夏令时,我的设备和用户设备(反映他们的时区)肯定也是一样的吗?我用它来选择一个特定的日子,要么是今天,要么是日历控件中的选定日期(在这种情况下,当我导航到新的月份页面时,当月的第一天)。所以正确的天数很重要。再次感谢。
  • BST(英国夏令时)等于 UTC +1。这可以解释 1 小时的差异,但我不知道为什么它实际上要休息 1 个月。无论如何这里是类似的问题,也许它会帮助你stackoverflow.com/questions/7089720/…

标签: ios objective-c cocoa-touch nscalendar


【解决方案1】:

我自己试过这个:

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComponents = [gregorian components:( NSYearCalendarUnit |
                                                          NSMonthCalendarUnit | NSDayCalendarUnit ) fromDate:[NSDate date]];
[dateComponents setDay:1];
NSLog(@"%@", [gregorian dateFromComponents:dateComponents]);

它会正确打印2015-04-30 22:00:00 +0000,这将是在添加 2 小时(在我的情况下)时区差异后的 5 月 1 日。重新检查你的代码,好像self.calender.currentDate 给出了错误的月份?

【讨论】:

  • 这是另一个问题。
猜你喜欢
  • 1970-01-01
  • 2012-06-29
  • 2021-02-17
  • 1970-01-01
  • 2011-03-20
  • 2012-12-12
  • 2011-02-25
  • 1970-01-01
相关资源
最近更新 更多