在我的應用程序中,我使用NSTimer並使用initWithFireDate。 我想從現在起一個小時後開啓計時器。 「現在」意味着當地時區。 當我試圖獲得添加一小時,並試圖打印它,它打印的時間格林威治標準時間,而不是根據我的時區。 我該如何解決這個錯誤? 根據當地時區的不同,我希望從現在起1小時後可以獲得NSDate。iPhone - NSTimer - initWithFireDate並傳遞當地時間
0
A
回答
0
獲得時間後,找到時區並相應地添加時差。
0
你可以用NSDateFormatter採取不同格式的日期字符串。試試看,你會得到你想要的答案。
1
2
此代碼將幫助您獲得本地時間,你可以把它從那裏據此前鋒:
- (NSDate *)currentLocalTime {
NSDate *aTriggerDate = [NSDate date];
NSTimeZone *aSourceTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSTimeZone *aTriggerTimeZone = [NSTimeZone systemTimeZone];
NSInteger aSourceGMTOffset = [aSourceTimeZone secondsFromGMTForDate:aTriggerDate];
NSInteger aTriggerGMTOffset = [aTriggerTimeZone secondsFromGMTForDate:aTriggerDate];
NSTimeInterval anInterval = aTriggerGMTOffset - aSourceGMTOffset;
NSDate *aFinalDate = [[NSDate alloc] initWithTimeInterval:anInterval sinceDate:aTriggerDate];
return aFinalDate;
}
0
這是我的比凱勒姆吉特·辛格在斯威夫特代碼版本(僅通過使用「UTC」爲我工作作爲縮寫)。希望它能幫助:
func testTimeZone(){
let currentLocalTime = NSDate()
let sourceTimeZone = NSTimeZone(abbreviation: "UTC")
let triggerTimeZone = NSTimeZone.systemTimeZone()
let sourceGTMOffset = sourceTimeZone?.secondsFromGMTForDate(currentLocalTime)
let triggerGTMOffset = triggerTimeZone.secondsFromGMTForDate(currentLocalTime)
let interval = triggerGTMOffset - sourceGTMOffset!
let finalDate = NSDate(timeInterval: NSTimeInterval.init(interval), sinceDate: currentLocalTime)
Swift.print("Current local time: \(currentLocalTime)")
Swift.print("Source Time Zone (GTM): \(sourceTimeZone)")
Swift.print("Trigger Time Zone (System Time Zone): \(triggerTimeZone)")
Swift.print("Source GTM Offset: \(sourceGTMOffset)")
Swift.print("Trigger GTM Offset: \(triggerGTMOffset)")
Swift.print("Interval (Source - Trigger Offsets): \(interval)")
Swift.print("Final Date (Current + interval): \(finalDate)")
}
UPDATE
我居然發現了一個更短的方式來獲得的日期,這樣一來爲我更好地工作:
var currentDate: NSDate {
let currentLocalTime = NSDate()
let localTimeZone = NSTimeZone.systemTimeZone()
let secondsFromGTM = NSTimeInterval.init(localTimeZone.secondsFromGMT)
let resultDate = NSDate(timeInterval: secondsFromGTM, sinceDate: currentLocalTime)
return resultDate
}
相關問題
- 1. NSDatePicker,帶initWithFireDate的NSTimer:如果我選擇過去的日期/時間,會觸發
- 2. iPhone - NSTimer問題當iphone鎖
- 3. 當地時間區iPhone
- 4. iPhone開發。 EXC_BAD_ACCESS當在視圖之間傳遞數據時
- 5. 按時發佈之間傳遞,iPhone
- 6. iPhone:的NSTimer
- 7. 傳遞的NSTimer有參數
- 8. NSTimer Lap Time iPhone
- 9. NSTimer Lag - iPhone SDK
- 10. 發佈NSTimer iPhone?
- 11. Iphone NSTimer問題
- 12. NSTimer iPhone問題
- 13. iPhone NSTimer OpenGL問題
- 14. 如何傳遞函數的NSTimer
- 15. 通過NSTimer傳遞數據UserInfo
- 16. Swift NSTimer傳遞變量語法
- 17. iphone多NSTimer的麻煩
- 18. iPhone - 的NSTimer不火
- 19. 遞增的NSTimer
- 20. iphone,在類之間傳遞數組?
- 21. iphone:功能之間傳遞對象
- 22. 將另一個時區的時間換算爲當地時間當地時間
- 23. python timeout_decorator傳遞時間
- 24. 在iPhone NSTimer失效時遇到問題
- 25. 目標c NSTimer間隔時間設置
- 26. Swift NSTimer動態更改時間間隔
- 27. 更改NSTimer的時間間隔
- 28. 使用JSON傳遞日期時更改爲本地時間
- 29. Json utc時間到當地時間
- 30. Twitter時間到當地時間c#
你做任何事NSDateFormatter並把它放回NSDate,它不會工作。 – Satyam