ios - 找到一周中依赖于语言环境的第一天

标签 ios objective-c cocoa-touch nsdate nsdatecomponents

给定一个 NSDate,我如何在给定用户区域的情况下找到该日期所在周的第一天。例如,我听说有些国家/地区将星期一视为一周的第一天,而其他国家/地区则使用星期日。在第一种情况下我需要返回前一个星期一,但在后一种情况下我需要返回前一个星期日。

到目前为止,我的最大努力总是返回前一个星期天,无论应用的设备设置如何:

NSCalendar *calendar = [NSCalendar currentCalendar];
[calendar setLocale:[NSLocale currentLocale]];
NSDateComponents *components = [calendar components:NSYearForWeekOfYearCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit fromDate:originalDate];
[components setWeekday:1];
NSDate *firstDayOfWeek = [calendar dateFromComponents:components];

奖金问题:在 iOS 上,哪个设置会导致此问题?是“区域格式”吗?

最佳答案

尝试改变:

[components setWeekday:1];

到:

[components setWeekday:[calendar firstWeekday]];

您还应该删除 NSYearForWeekOfYearCalendarUnitNSWeekCalendarUnit 组件。

奖励问题:“区域格式”应该是更改一周第一天的设置。

关于ios - 找到一周中依赖于语言环境的第一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23668942/

相关文章:

ios - SpriteKit 的坐标系在 Xcode 8 中是否发生了变化?

iOS/Cocoa 数据 Controller 类 - 这是标准做法吗?

ios - 如何在TableView下面添加View?

objective-c - Objective-C 中实例变量上的协议(protocol)如何工作?

objective-c - 如何解析 XML/PLIST 文件并将每个键的值放入适当的数据类型?

objective-c - 事件指示器不旋转

ios - 在 iOS 上使用 RSA 公钥加密

ios - 添加时 PFQueryCollectionViewController 不显示新数据

ios - 无法将数据从 TableView 传递到 View Controller

ios - 如何在 iOS 中将一系列图像转换为电影?