0nd*_*re_ 1 date ios swift swift3
我试图从我约会的星期一00:00返回.这是我的代码:
func getMonday(myDate: Date) -> Date {
let cal = Calendar.current
let comps = cal.dateComponents([.weekOfYear, .yearForWeekOfYear], from: myDate)
let beginningOfWeek = cal.date(from: comps)!
return beginningOfWeek
}
Run Code Online (Sandbox Code Playgroud)
我的问题是它不会在周一00:00返回,而是在周六22:00返回.
例:
let monday1 = getMonday(myDate: date) //date is: 2016-10-04 17:00:00
print(monday1) //Prints: 2016-10-01 22:00:00 (Saturday)
Run Code Online (Sandbox Code Playgroud)
我的问题是:
如何从周一00:00返回myDate?
非常感谢你.
您的代码返回给定周的第一天,可能是星期日或星期一(或者某些其他日期),具体取决于您的语言环境.
如果您希望星期一被认为是第一个工作日,那么设置
cal.firstWeekDay = 2
Run Code Online (Sandbox Code Playgroud)
如果你想要给定周的星期一,而不是一周的开始,那么设置comps.weekday = 2:
func getMonday(myDate: Date) -> Date {
let cal = Calendar.current
var comps = cal.dateComponents([.weekOfYear, .yearForWeekOfYear], from: myDate)
comps.weekday = 2 // Monday
let mondayInWeek = cal.date(from: comps)!
return mondayInWeek
}
Run Code Online (Sandbox Code Playgroud)
请注意,打印a Date始终使用GMT时区,您需要一个日期格式化程序来根据您当地的时区打印结果.例:
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd HH:mm"
let now = Date()
print(df.string(from: now)) // 2016-10-02 20:16
let monday1 = getMonday(myDate: now)
print(df.string(from: monday1)) // 2016-09-26 00:00
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2999 次 |
| 最近记录: |