- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对这段代码有疑问:
+ (NSDate *)dateByMovingToBeginningOfDay:(NSDate *)date
{
unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents* parts = [[NSCalendar currentCalendar] components:flags fromDate:date];
[parts setHour:0];
[parts setMinute:0];
[parts setSecond:0];
return [[NSCalendar currentCalendar] dateFromComponents:parts];
}
+ (NSDate *)dateByMovingToEndOfDay:(NSDate *)date
{
unsigned int flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *parts = [[NSCalendar currentCalendar] components:flags fromDate:date];
[parts setHour:23];
[parts setMinute:59];
[parts setSecond:59];
return [[NSCalendar currentCalendar] dateFromComponents:parts];
}
+ (BOOL)checkForReportInDate:(NSDate *)date forUser:(User *)user
{
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = appDelegate.managedObjectContext;
NSDate *startDate = [NSDate dateByMovingToBeginningOfDay:date];
NSDate *endDate = [NSDate dateByMovingToEndOfDay:date];
NSLog(@"apply date: %@", date.description);
NSLog(@"start date: %@", startDate.description);
NSLog(@"end date: %@", endDate.description);
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
fetchRequest.entity = [NSEntityDescription entityForName:@"Report" inManagedObjectContext:context];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"user == %@ AND (date > %@ AND date < %@)", user, startDate, endDate];
fetchRequest.fetchLimit = 1;
NSError *error = nil;
NSUInteger reportExist = [context countForFetchRequest:fetchRequest error:&error];
if(error != nil) {
NSLog(@"Error: %@", [error localizedDescription]);
return NO;
}
if(reportExist > 0) {
return 1;
}
else {
return 0;
}
}
它生成了错误的开始日期...在我的控制台中有
2012-04-12 14:34:46.456 iFood Pro[23820:fb03] 将报告保存到数据库2012-04-12 14:34:46.458 iFood Pro[23820:fb03] 申请日期:2012-04-12 12:34:41 +00002012-04-12 14:34:46.458 iFood Pro[23820:fb03] 开始日期:2012-04-11 22:00:00 +00002012-04-12 14:34:46.459 iFood Pro[23820:fb03] 结束日期:2012-04-12 21:59:59 +0000
开始日期应为 2012-04-12 00:00:00 +0000 而不是 2012-04-11 22:00:00 +0000为什么会有这种行为?我快疯了!
最佳答案
已修复,问题是时区...使用 [parts setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
解决了问题
关于ios - NSDate 通过 NSCalendar 的 dateFromComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10123746/
我试图从 NSDateComponents 获取一个 Date 对象,但是 Calendar.date(from: Components) 给出了某一天的日期在我的原始组件中的日期之前。 let ca
下面的代码 NSCalendar *cal = [NSCalendar currentCalendar]; [cal setFirstWeekday:2]; [cal setMinimumDaysIn
这个问题已经有答案了: Difference between NSDate and NSDateComponent value for the same date (1 个回答) 已关闭 8 年前。
这个问题在这里已经有了答案: NSDateComponents weekOfYear returns wrong date (1 个回答) 关闭 5 年前。 NSCalendar dateFromC
所以我尝试获取这周的日期范围。 当我获取当前日期组件(只有年份和日期)时,这些是值: 我注意到近周写有“过时”。曾尝试搜索苹果文档,但一无所获。 然后我尝试获取当前日历(或公历,相同值)的 NSDat
我正在尝试在我的应用程序的用户默认设置中存储和检索特定时间(因为它的重复事件日期没有相关性并被忽略),但我遇到了这个奇怪的问题,小时是正确的,但分钟和秒不是 这是我的代码 var calendar =
-(NSDate *)dateFromDate:(NSDate *)inDate withNewTime:(NSDateComponents *)inTimeComponents { NSCalend
我正在 NSDate 上编写一个类别,以根据 ISO 8601 字符串表示形式 (YYYYMMDD) 创建 NSDate。 尽管我通过了 20010226,但我返回的是 2001-02-25 23:0
我们正在使用 dateFromComponents:解析从服务器返回的日期字符串。 在极少数情况下,此调用会崩溃,但我们无法重现该错误。有没有人见过这种堆栈跟踪? Thread 0: 0 libi
执行以下代码后 NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *expiryDateComponents
这个问题在这里已经有了答案: unexpected result of dateFromComponents: (3 个答案) 关闭 6 年前。 我试图了解 NSCalendar 及其组件在 Swi
我正在尝试从组件的年、周和dayOfWeek获取日期,但是我从上面提到的函数中得到了奇怪的日期。这是我所做的: let calendar = NSCalendar(identifier: NSCale
我想找出一年中第一个星期的日期: NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponents *components =
我期待2010-10-11 00:00:00 但我收到的是 2010-10-10 21:00:00 +0000 我知道,我可以添加几个小时并收到所需的日期,但我不明白为什么我会得到前一天的 21 小时
我对这段代码有疑问: + (NSDate *)dateByMovingToBeginningOfDay:(NSDate *)date { unsigned int flags = NSYear
假设我有以下初始化 NSDateComponents 的代码: NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponent
假设我有以下初始化 NSDateComponents 的代码: NSCalendar *calendar = [NSCalendar currentCalendar]; NSDateComponent
这段代码 NSCalendar *calendar =[NSCalendar currentCalendar]; [gregorian setTimeZone:tz]; NSLog(@"%@", [g
当我将 [NSDate date] 传递给 NSDateComponents ,然后在修改工作日后传回时,我总是得到时间 16:00:00 。为什么? 代码如下: { NSC
假设我有一个约会,我想做两件事: 将小时重置为指定的小时。 将一天增加一定数量。 通过阅读文档,您似乎需要使用两个不同的步骤: // Step 1: Get today at 9 AM. NSDate
我是一名优秀的程序员,十分优秀!