ios - NSDateComponents 中的错误日期

标签 ios nsdate

我正在创建一个 NSDate。为什么一天总是少一天?

这是代码:

NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *comps = [gregorian components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:today];
[comps setDay:31];
NSDate *lastDayOfMonth = [gregorian dateFromComponents:comps];
NSLog(@"last %@",lastDayOfMonth);

这是日志:

last 2013-12-30 23:00:00 +0000

结果是 30 而不是 31

最佳答案

last 2013-12-30 23:00:00 +0000

这是因为您显示的时间为格林威治标准时间 - 即伦敦时间。但你不在伦敦。我不知道你在哪里,但如果你仔细想想,你会发现伦敦 30 日 2300 时,你所在的地方是 31 日午夜,这正是你所要求的。

关于ios - NSDateComponents 中的错误日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20765433/

相关文章:

ios - 在移动应用程序的 ionic 中创建嵌套列表

ios - 旋转的 Spring 动画在它开始的地方结束

ios - NSDateFormatter dateFromString 不正确

swift - 获取一天中的所有时间(以日期格式)从上午 9 点到晚上 11 点,并保存在 Swift 的数组中

ios - 使用 Parse : kPFErrorPaymentDisabled 在 App Purchase 中进行沙盒测试

iphone - 将点从图像转换为 UIImageView 点,contentMode-aware

iphone - 仅为一个 View Controller 从静态库维护 iOS 纵向方向

iphone - 如何检查 iPhone 中的日期有效性?

ios - 奇怪的将输出从 NSString 转换为 NSDate

swift - 创建 NSDate 并设置 AM 或 PM