Ios Swift:应用程序中的每周第一天不';在“设置”中更改后,无法更改

Ios Swift:应用程序中的每周第一天不';在“设置”中更改后,无法更改,ios,swift,iphone,date,calendar,Ios,Swift,Iphone,Date,Calendar,在我的应用程序中,我需要根据日期对不同的项目进行分组,因此我需要一种方法来获取一周开始的日期,以及一种方法来确定两个日期是否在同一周内。然而,我在尝试实现这一点时遇到了意想不到的问题 我使用此代码获取一周的第一天: return Calendar.current.date(from: Calendar.current.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self)) 我使用的是Calendar.current,但无论在

在我的应用程序中,我需要根据日期对不同的项目进行分组,因此我需要一种方法来获取一周开始的日期,以及一种方法来确定两个日期是否在同一周内。然而,我在尝试实现这一点时遇到了意想不到的问题

我使用此代码获取一周的第一天:

return Calendar.current.date(from: Calendar.current.dateComponents([.yearForWeekOfYear, .weekOfYear], from: self))
我使用的是
Calendar.current
,但无论在iOS设置中选择哪一天作为一周的开始,它都返回同一天

要检查两个日期是否在同一周,我使用以下代码:

    func isInSameWeek(date: Date) -> Bool { isEqual(to: date, toGranularity: .weekOfYear) }
不过,无论在iOS设置中选择哪一天作为一周的开始,周日和周一日期始终被视为不在同一周


我该如何解决这个问题?或者,这是一种正常的行为,并且此代码将对不同地区的用户正常工作?

您正在更改日历应用程序的设置,而不是iOS当前日历本身。您需要提供自己的应用程序设置,以便用户更改

var calendar = Calendar.current
calendar.firstWeekday = 2
calendar.date(from: calendar.dateComponents([.yearForWeekOfYear, .weekOfYear], from: Date()))?.description(with: .current)  // "Monday, September 14, 2020 at 12:00:00 AM Brasilia Standard Time"