iphone - NSDateComponents 返回错误的日期

标签 iphone ios objective-c nsdate nsdatecomponents

为什么这给我错误的日期?

 NSCalendar *myCalendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
    NSDateComponents* components = [myCalendar components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit fromDate:[NSDate date]];
    [components setYear:2013];
    [components setMonth:06];
    [components setDay:28];
    [components setHour:5];
    [components setMinute:00];
    NSDate *startDate1 = [myCalendar dateFromComponents:components];
    NSLog(@"start date is %@",startDate1);

开始日期是 2013-06-28 03:00:00 +0000

编辑

我想做的是以下内容。我有一个开始和结束。

例如:

开始日期是 2013-06-28 05:00

结束日期是:2013-06-29 04:59

然后我想检查当前日期是否在开始日期和结束日期之间。我正在使用以下内容。

NSComparisonResult result1 = [now compare:startDate1];
    NSComparisonResult result2 = [now compare:endDate1];

if (result2 == NSOrderedSame && result1 == NSOrderedSame ) {
        NSLOG(@"OKE!");
 }

最佳答案

可能日期是正确的,但你误解了日志:

记录日期始终在 TZ +0000 中完成。例如,如果您在中欧,您将拥有(预期的?)日期 2013-06-28 05:00:00 +0200,但日志将显示标准化日期 2013-06-28 03:00:00 +0000。这是相同的日期和时间!它只是用不同的方式表达。

+++

如果您的组件也在 TZ +0000,您应该设置日历的时区。

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

相关文章:

iphone - UITableView pushViewController 在选择一行时

iphone - 如何在应用程序关闭时通过在 iPhone 中发送推送通知来执行某些操作

ios:<错误>:CGAffineTransformInvert:奇异矩阵

objective-c - 带有 UIWebView loadRequest 的 UIActivityIndi​​cator?

ios - 我的删除核心对象方法有什么问题?

ios - 向私有(private)客户分发 iPhone 应用程序

ios - 从 CocoaPods 框架编辑锁定的文件

ios - 一个 Xcode 文件中的结构无法在另一个文件中工作/被识别

ios - 在应用内购买 iOS 中恢复交易

iphone - 在 UIDatePicker 中仅显示小时