2017-04-14 51 views
-2

我使用此代碼顯示當前時間:如何查看時間在哪個時區中?

let UTCDate = Date() 
let formatter = DateFormatter() 
formatter.dateFormat = "yyyy-MM-dd hh:mm a" 
formatter.timeZone = TimeZone(identifier:"GMT") 
let defaultTimeZoneStr = formatter.string(from: UTCDate) 

有人可以幫我檢查,如果這個時間是在時區(如:中央時區,東部時區)....

+1

你的問題是uncl耳。舉一個你想要確定的例子。順便說一句 - 你專門寫了代碼給你一個在GMT時區當前時間的字符串。 – rmaddy

+0

是的,我想要一個字符串值...檢查GMT或當地時間是否屬於特定時區是否可行? –

+0

這沒有任何意義。如果我告訴你這是「下午2:00」,那麼這條小信息就沒有時區信息。它可能是世界上任何地方的下午2點。再一次,你究竟在做什麼(我不是用你發佈的代碼,而是用英文)。 – rmaddy

回答

2

除非時間被指定爲帶有某種時區指示符的字符串,例如「2017-04-14 10:00:00 EDT」或「2017-04-14 10:00:00 -0400」,則無法告訴給定時間值的時區。

Swift的存儲時間的方式爲Date值,它簡單地指定了2001年1月1日之前或之後的UTC秒數,並使用日曆和時區來顯示任何時間值,這對於用戶。通常,這意味着使用時區設置,因爲在大多數個案 - 但不是全部個案 - 該時區設置將與用戶所在的時區匹配。

如果你想在用戶的當前時區設置的縮寫名稱,使用此:

Calendar.current.timeZone.abbreviation()! // returns "EDT" for me; 
              // I’m in the eastern time zone 
              // and on daylight saving time 

或者,如果您喜歡得到由地理標識的時區,使用此:

Calendar.current.timeZone.identifier // returns "America/New_York" for me 

或者如果你想要時區的全名,試試這個(並玩參數):

// Returns "Eastern Standard Time" for me 
Calendar.current.timeZone.localizedName(for: .standard, locale: Locale.current) 
相關問題