我想检查当地时间是否在另一个时区的午夜之后。
具体来说,如果我现在在星期六晚上11点或当地时间星期日凌晨1点,我想看看它是否是中部时间新一周的开始(星期日上午12点之后)。
答案 0 :(得分:2)
您可以使用Calendar
' dateComponents(in: TimeZone, from: Date)
来检查其他时区的时间和日期。针对您的具体应用:
// create current date, central time zone, and get the current calendar
let now = Date()
let centralTimeZone = TimeZone(abbreviation: "CST")!
let calendar = Calendar.current
let components = calendar.dateComponents(in: centralTimeZone, from: now)
if components.weekday == 1 {
print("It is Sunday in Central Standard Time.")
} else {
print("It is not Sunday in Central Standard Time.")
}
您正在做的是要求当前日历在指定的时区内为您提供一整套DateComponents。然后components.weekday
将星期几作为Int,从公历的星期日开始为1。
如果你想更全面地了解它是否明天"在某个地方,这是一个简单的方法:
func isItTomorrow(in zone: TimeZone) -> Bool {
var calendarInZone = Calendar(identifier: Calendar.current.identifier)
calendarInZone.timeZone = TimeZone(abbreviation: "CST")!
return calendarInZone.isDateInTomorrow(Date())
}
if isItTomorrow(in: centralTimeZone) {
print("It is tomorrow.")
} else {
print("It is not tomorrow.")
}
isItTomorrow(in: TimeZone)
创建与当前日历相同类型的新日历(可能是.gregorian
,但您永远不知道)并将其时区设置为所需的日历。然后它使用整洁的内置Calendar
方法.isDateInTomorrow()
来检查当前时间是否为"明天"在目标时区。
还有很多其他方法可以做到这一点,根据您的具体需要,可能会有一个内置的方法可以为您节省大量的工作,因此值得一读的{%{ {3}}和Calendar了解可用的内容。