【发布时间】:2015-10-11 10:23:48
【问题描述】:
我想为每个人获取具有特定语言环境的本周的第一天。 例如,美国的一周从星期日开始,而其他国家/地区从星期一开始。
我想从星期一开始,这是因为我想将它用于 SQLQuery。
我有这个:
NSDate *weekDay = [NSDate date]; //any date in the week in which to calculate the first or last weekday
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [gregorian components:NSWeekdayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:weekDay];
[components setDay:([components day]-([components weekday]-[[NSCalendar currentCalendar] firstWeekday]))];
NSDate *firstWeekday = [gregorian dateFromComponents:components];
NSDate *lastWeekday = [[gregorian dateFromComponents:components] dateByAddingTimeInterval:7 * 24 * 3600 - 1];
NSLog(@"first - %@ \nlast - %@", firstWeekday, lastWeekday);
如果在您的语言环境中周从星期一开始但如果从星期日开始不返回我想要的,这很好。
所以想象今天是 2015 年 10 月 11 日 周日语言环境将返回第 11 周的第一天,最后一天,17 星期一语言环境将返回第 5 周的第一天,最后一天 11
我想在我的应用程序执行时返回第二个选项。
谢谢。 最好的问候。
【问题讨论】:
-
作为一个英国人,我的一周从星期一开始......
-
已更新,对美国有影响,但问题是一样的...
-
您是否尝试将日历的语言环境设置为 systemLocale 或设置 firstWeekday?
-
我想要的是不要使用 systemLocale 来防止第一天是星期日的语言环境。
-
文档说:当您不想要任何本地化时,请使用系统区域设置。使用当前语言环境来格式化您向用户显示的文本。
标签: objective-c nsdate locale nsdateformatter nsdatecomponents