objective-c - 给定年份和周数,如何获得一周的第一天的日期?

标签 objective-c ios

我需要这个来获取每周图表中的数据。这个对我不起作用。它返回的日期是所选年份的一月一日。有什么想法吗?

-(NSDate*) getFirstDateOfTheWeek:(NSString*) weekNr andYear: (NSString*) theYear {
        int intYear = [theYear intValue];
        int intWeek = [weekNr intValue];

        NSCalendar *gregorian = [[NSCalendar alloc]
                                 initWithCalendarIdentifier:NSGregorianCalendar];
        [gregorian setLocale:[NSLocale currentLocale]];

        NSDateComponents * comp = [[NSDateComponents alloc] init];
        [comp setYear:intYear];
        [comp setWeek:intWeek];

        NSDate *dateOfFirstDay = [gregorian dateFromComponents:comp];
        NSDateComponents *dateComponents =
        [gregorian components:NSWeekdayCalendarUnit|NSWeekCalendarUnit|NSDayCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit fromDate:dateOfFirstDay];
        int year = [dateComponents year];
        int month = [dateComponents month];
        int day = [dateComponents day];

        dateOfFirstDay= [gregorian dateFromComponents:dateComponents];
        return dateOfFirstDay;
    }

最佳答案

除了 setYear 和 setWeek 之外,您还应该在 NSDateComponents 中设置 Weekday。

[comp setWeekday:intWeek];

然后在抓取新组件时不需要很多标志,因为您实际上只需要一天(以及其他用于调试):

    [gregorian components:NSDayCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit fromDate:dateOfFirstDay];

关于objective-c - 给定年份和周数,如何获得一周的第一天的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10701148/

相关文章:

ios - 以编程方式设置约束

objective-c - 正则表达式用html粗体标记替换星号字符

ios - 运行Xcode程序时出错

ios - 如何使用 ARC 在 iOS 中将对象标记为保留和只读?

ios - 如何通过在 SwiftUI 中点击列表中的行元素从 subview 返回到父 View ?

ios - 如何在 Swift3 iOS 中的特定持续时间内在 AVPlayer 中播放视频

ios - 在 Objective-C 中将 UINavigationController 添加到我的 segue.destinationViewController

ios - UIActivityViewController为WhatsApp或Facebook选择了不同的文本

ios - 当iOS从内存中删除应用程序时

iOS 8 点击 UITextView 会卡住应用程序