Ios 获取一周的工作日和日期

Ios 获取一周的工作日和日期,ios,swift,nsdate,Ios,Swift,Nsdate,我正在开发一个需要创建每周日历的应用程序。为此,我需要本周的天数和日期(星期日,9月30日,星期一,10月1日,星期二,10月2日等)。有人能指导我如何做到这一点吗 问候 Pankaj如果我理解正确,要获得预期的日期格式,您可以将NSDateFormatter与以下格式化程序一起使用: NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init]; dateFormatter.dateFormat:@“EEEE,MMM d”; NSLog

我正在开发一个需要创建每周日历的应用程序。为此,我需要本周的天数和日期(星期日,9月30日,星期一,10月1日,星期二,10月2日等)。有人能指导我如何做到这一点吗

问候

Pankaj

如果我理解正确,要获得预期的日期格式,您可以将
NSDateFormatter
与以下格式化程序一起使用:

NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init];
dateFormatter.dateFormat:@“EEEE,MMM d”;
NSLog(@“%@,[dateFormatter stringFromDate:[NSDate date]])

您还可以设置日期格式化程序的区域设置,以获取指定语言的工作日:

[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@“en_GB”]


有关更多详细信息,请参阅如果我理解正确,要获得预期的日期格式,您可以将
NSDateFormatter
与以下格式化程序一起使用:

NSDateFormatter*dateFormatter=[[NSDateFormatter alloc]init];
dateFormatter.dateFormat:@“EEEE,MMM d”;
NSLog(@“%@,[dateFormatter stringFromDate:[NSDate date]])

您还可以设置日期格式化程序的区域设置,以获取指定语言的工作日:

[dateFormatter setLocale:[NSLocale localeWithLocaleIdentifier:@“en_GB”]


欲了解更多详细信息,请参考

这里有一个简单的函数,可提取本周所有日期的日期,从本周的星期日到星期六

func formattedDaysInThisWeek() -> [String] {
    // create calendar
    let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)!

    // today's date
    let today = NSDate()
    let todayComponent = calendar.components([.Day, .Month, .Year], fromDate: today)

    // range of dates in this week
    let thisWeekDateRange = calendar.rangeOfUnit(.Day, inUnit:.WeekOfMonth, forDate:today)

    // date interval from today to beginning of week
    let dayInterval = thisWeekDateRange.location - todayComponent.day

    // date for beginning day of this week, ie. this week's Sunday's date
    let beginningOfWeek = calendar.dateByAddingUnit(.Day, value: dayInterval, toDate: today, options: .MatchNextTime)

    var formattedDays: [String] = []

    for i in 0 ..< thisWeekDateRange.length {
        let date = calendar.dateByAddingUnit(.Day, value: i, toDate: beginningOfWeek!, options: .MatchNextTime)!
        formattedDays.append(formatDate(date))
    }

    return formattedDays
}

func formatDate(date: NSDate) -> String {
    let format = "EEE MMMdd"
    let formatter = NSDateFormatter()
    formatter.dateFormat = format
    return formatter.stringFromDate(date)
}

这里有一个简单的函数,可以提取本周所有日期的日期,从本周的星期日到星期六

func formattedDaysInThisWeek() -> [String] {
    // create calendar
    let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)!

    // today's date
    let today = NSDate()
    let todayComponent = calendar.components([.Day, .Month, .Year], fromDate: today)

    // range of dates in this week
    let thisWeekDateRange = calendar.rangeOfUnit(.Day, inUnit:.WeekOfMonth, forDate:today)

    // date interval from today to beginning of week
    let dayInterval = thisWeekDateRange.location - todayComponent.day

    // date for beginning day of this week, ie. this week's Sunday's date
    let beginningOfWeek = calendar.dateByAddingUnit(.Day, value: dayInterval, toDate: today, options: .MatchNextTime)

    var formattedDays: [String] = []

    for i in 0 ..< thisWeekDateRange.length {
        let date = calendar.dateByAddingUnit(.Day, value: i, toDate: beginningOfWeek!, options: .MatchNextTime)!
        formattedDays.append(formatDate(date))
    }

    return formattedDays
}

func formatDate(date: NSDate) -> String {
    let format = "EEE MMMdd"
    let formatter = NSDateFormatter()
    formatter.dateFormat = format
    return formatter.stringFromDate(date)
}

这周你就需要它吗?如果是这样,下面是一些您应该能够使用的代码:

- (NSString *)stringOfDatesOfThisWeek {
    NSArray *datesOfThisWeek = [self dateOfTheWeek:[NSDate date]];

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"EEE MMM d"];

    NSMutableString *dateStringForThisWeek = [[NSMutableString alloc] initWithString:[formatter stringFromDate:[datesOfThisWeek firstObject]]];
    for (int i = 1; i < datesOfThisWeek.count; i++) {
        [dateString appendFormat:@", %@", [formatter stringFromDate:[datesOfThisWeek objectAtIndex:i]]];
    }
}

- (NSArray *)datesOfTheWeek:(NSDate *)todaysDate {
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSInteger weekNumber =  [[calendar components: NSWeekCalendarUnit fromDate:todaysDate] week];

    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

    NSDateComponents *comp = [gregorian components:NSYearCalendarUnit fromDate:todaysDate];
    [comp setWeek:weekNumber];  //Week number.

    NSMutableArray *dates = [NSMutableArray new];
    for (int i = 0; i < 7; i++) {
        [comp setWeekday:1]; //First day of the week. Change it to 7 to get the last date of the week
        NSDate *resultDate = [gregorian dateFromComponents:comp];
        [dates addObject:resultDate];
    }

    return dates;
}
-(NSString*)本周的日期字符串{
NSArray*datesOfThisWeek=[每周的自日期:[NSDate date]];
NSDateFormatter*格式化程序=[[NSDateFormatter alloc]init];
[格式化程序setDateFormat:@“EEE MMM d”];
NSMutableString*dateStringForThisWeek=[[NSMutableString alloc]initWithString:[formatter stringFromDate:[datesOfThisWeek firstObject]];
对于(int i=1;i

在没有Xcode的情况下输入所有这些之后,我意识到这个问题是关于Swift的。我会留下它,以防有人想要一个客观的C答案,却无意中发现了这个问题。

这周你需要它吗?如果是这样,下面是一些您应该能够使用的代码:

- (NSString *)stringOfDatesOfThisWeek {
    NSArray *datesOfThisWeek = [self dateOfTheWeek:[NSDate date]];

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"EEE MMM d"];

    NSMutableString *dateStringForThisWeek = [[NSMutableString alloc] initWithString:[formatter stringFromDate:[datesOfThisWeek firstObject]]];
    for (int i = 1; i < datesOfThisWeek.count; i++) {
        [dateString appendFormat:@", %@", [formatter stringFromDate:[datesOfThisWeek objectAtIndex:i]]];
    }
}

- (NSArray *)datesOfTheWeek:(NSDate *)todaysDate {
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSInteger weekNumber =  [[calendar components: NSWeekCalendarUnit fromDate:todaysDate] week];

    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];

    NSDateComponents *comp = [gregorian components:NSYearCalendarUnit fromDate:todaysDate];
    [comp setWeek:weekNumber];  //Week number.

    NSMutableArray *dates = [NSMutableArray new];
    for (int i = 0; i < 7; i++) {
        [comp setWeekday:1]; //First day of the week. Change it to 7 to get the last date of the week
        NSDate *resultDate = [gregorian dateFromComponents:comp];
        [dates addObject:resultDate];
    }

    return dates;
}
-(NSString*)本周的日期字符串{
NSArray*datesOfThisWeek=[每周的自日期:[NSDate date]];
NSDateFormatter*格式化程序=[[NSDateFormatter alloc]init];
[格式化程序setDateFormat:@“EEE MMM d”];
NSMutableString*dateStringForThisWeek=[[NSMutableString alloc]initWithString:[formatter stringFromDate:[datesOfThisWeek firstObject]];
对于(int i=1;i

在没有Xcode的情况下输入所有这些之后,我意识到这个问题是关于Swift的。我会留下它,以防有人想要一个Objective-C答案,却无意中发现了这个问题。

更新了@fennelouski的Objective-C代码:

- (NSString *)stringOfDatesOfThisWeek {
NSArray *datesOfThisWeek = [self datesOfTheWeek:[NSDate date]];

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"EEE MMM d"];

NSMutableString *dateStringForThisWeek = [[NSMutableString alloc] initWithString:[formatter stringFromDate:[datesOfThisWeek firstObject]]];
for (int i = 1; i < datesOfThisWeek.count; i++) {
    [dateStringForThisWeek appendFormat:@", %@", [formatter stringFromDate:[datesOfThisWeek objectAtIndex:i]]];
}
return dateStringForThisWeek;
}

- (NSArray *) datesOfTheWeek:(NSDate *)todaysDate {
    NSCalendar *calendar = [NSCalendar currentCalendar];
    NSInteger weekNumber =  [[calendar components: NSCalendarUnitWeekOfMonth fromDate:todaysDate] weekOfMonth];

    NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

    NSDateComponents *comp = [gregorian components:NSCalendarUnitYear fromDate:todaysDate];
    [comp setWeekOfMonth:weekNumber];  //Week number.

    NSMutableArray *dates = [NSMutableArray new];
    for (int i = 0; i < 7; i++) {
        [comp setWeekday:1]; //First day of the week. Change it to 7 to get the last date of the week
        NSDate *resultDate = [gregorian dateFromComponents:comp];
        [dates addObject:resultDate];
    }

    return dates;
}
-(NSString*)本周的日期字符串{
NSArray*datesOfThisWeek=[self datesOfTheWeek:[NSDate date]];
NSDateFormatter*格式化程序=[[NSDateFormatter alloc]init];
[格式化程序setDateFormat:@“EEE MMM d”];
NSMutableString*dateStringForThisWeek=[[NSMutableString alloc]initWithString:[formatter stringFromDate:[datesOfThisWeek firstObject]];
对于(int i=1;i