- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我将 [NSDate date] 传递给 NSDateComponents ,然后在修改工作日后传回时,我总是得到时间 16:00:00 。为什么?
代码如下:
{
NSCalendar *calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDate *now = [NSDate date];
NSLog(@"now = %@",now);
NSDateComponents *firstDayOfWeek = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday fromDate:now];
firstDayOfWeek.weekday = 1; // Monday as first day of week
NSDate *firstDayOfWeekDate = [calendar dateFromComponents:firstDayOfWeek];
NSLog(@"first day = %@", firstDayOfWeekDate);
}
{
NSCalendar *calendar = [[NSCalendar alloc]initWithCalendarIdentifier:NSCalendarIdentifierGregorian];
NSDate *now = [NSDate date];
NSLog(@"now = %@",now);
NSDateComponents *firstDayOfWeek = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitWeekday | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:now];
firstDayOfWeek.weekday = 1; // Monday as first day of week
firstDayOfWeek.hour = 1;
firstDayOfWeek.minute = 1;
firstDayOfWeek.second = 1;
NSDate *firstDayOfWeekDate = [calendar dateFromComponents:firstDayOfWeek];
NSLog(@"first day = %@", firstDayOfWeekDate);
}
输出是:
now = 2016-01-18 03:14:08 +0000
first day = 2016-01-17 16:00:00 +0000
now = 2016-01-18 03:14:08 +0000
first day = 2016-01-17 17:01:01 +0000
为什么小时从 16 开始?
最佳答案
NSDateComponents
没有到达 16:00:00
。现在是您当前时区的午夜。但是 NSLog
显示的是等效的 GMT 时间。这就是 +0000
的意思:例如格林威治标准时间 +00:00。
最重要的是,如果您想在本地时区查看生成的 NSDate
对象,您应该使用 NSDateFormatter
。
关于ios - 为什么 [日历 dateFromComponents :] always return hour 16 ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34846785/
我试图从 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
我是一名优秀的程序员,十分优秀!