SWIFT-WEEKOFDAY不同于EN US本地,然后是EN UK,DE DE
发布时间:2022-05-06 19:46:20 387
相关标签:
我在我的应用程序中显示了一年中的一周,用户可以选择一周的第一天以及德语或英语本地化。我注意到一年中选择英语的那一周有一个奇怪的差别。
有人能解释一下出了什么问题吗?我检查了我们是否有不同的编号,但唯一的区别是,我们一周的第一天是星期天,而不是星期一......
import UIKit
func getCalForId(_ identifier: String, andLocale locale: String) -> Calendar {
var cal = Calendar(identifier: .gregorian)
cal.timeZone = TimeZone(identifier: identifier)!
cal.locale = Locale(identifier: locale)
return cal
}
func GetDateByString(_ value: String) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd MMM yyyy HH:mm:ss Z"
return dateFormatter.date(from: value)!
}
let calDE_Berlin = getCalForId("Europe/Berlin", andLocale: "de_DE")
var calUS_Chicago = getCalForId("America/Chicago", andLocale: "en_US")
var calUS_Berlin = getCalForId("Europe/Berlin", andLocale: "en_US")
let calUK_Berlin = getCalForId("Europe/Berlin", andLocale: "en_UK")
let date = GetDateByString("5 5 2022 18:45:32 +0200")
let weekDE_Berlin = calDE_Berlin.dateComponents([.weekOfYear], from: date).weekOfYear!
let weekUS_Chicago = calUS_Chicago.dateComponents([.weekOfYear], from: date).weekOfYear!
let weekUS_Berlin = calUS_Berlin.dateComponents([.weekOfYear], from: date).weekOfYear!
let weekUK_Berlin = calUK_Berlin.dateComponents([.weekOfYear], from: date).weekOfYear!
print(calDE_Berlin.firstWeekday) // 2
print(calDE_Berlin.minimumDaysInFirstWeek) // 4
print(calUS_Chicago.firstWeekday) // 1
print(calUS_Chicago.minimumDaysInFirstWeek) // 1
print(calUS_Berlin.firstWeekday) // 1
print(calUS_Berlin.minimumDaysInFirstWeek) // 1
print(calUK_Berlin.firstWeekday) // 2
print(calUK_Berlin.minimumDaysInFirstWeek) // 4
print(weekDE_Berlin) // 18
print(weekUS_Chicago) // 19
print(weekUS_Berlin) // 19
print(weekUK_Berlin) // 18
提前谢谢
当做
编辑添加了minimumDaysInFirstWeek
.对德国来说似乎只是不同而已。但这并不能解释为什么基于en_US地区的日历会输出第19年的一周。
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报