這筆交易我想1978年六月18日的的NSDate表示 我試圖初始化的NSDate像用的NSDate,格式和時區掙扎
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
self.dateFormatter.timeStyle = NSDateFormatterNoStyle;
self.startDate = [dateFormatter dateFromString:@"19/06/78"];
NSLog(@"%@", self.startDate);
這將產生正確的日期時,iPhone是在國際設置中設置爲丹麥語。 它不適用於設置爲英語/美式設置的iPhone。
注意額外的一天(19),因爲丹麥是在GMT + 1,我認爲NSDate默認爲時間23:00:00。這表明我沒有按照預期工作。
我希望上述日期(18/06/1978)代表NSDate對象,無論設備上的時區,區域設置和國際設置如何。
如何實現這一目標?
編輯:
所以奧萊Begemann的答案似乎解決我的問題。他的解決方案確實在美國國際設置和歐洲國際設置的設備上創建了正確的日期。 但是,當蘋果應該審查的應用程序創建日期是1978年6月17日。這使得sence,因爲我將時區設置爲格林威治標準時間+0000。庫比蒂諾就像GMT -0007左右。 所以這會提前一天。
所以糾正我的問題:我要18-06-1978無論該設備是什麼樣的語言環境,時區物理或設置,逐
我試圖做的是設置一個起始日期18。 。1978年6月和稍後在我的應用程序中,將日期呈現爲格式爲「780618」(yyMMdd)的字符串,而不考慮設備的時區或地點。它總是必須是「780618」,因爲這是我的應用程序的關鍵開始日期。
所以我可能會出錯的問題。我可能應該接受時區的東西,並嘗試配置NSDateFormatter以輸出正確的日期,而不是試圖在任何地方強制使用相同的日期。
所以基本上:我想要的是任何地方格式化爲「780618」的NSDate實例 - 在任何時區使用任何國際設備設置。
如何實現這一目標?
工作就像一個魅力。嘗試了其他的答案,但沒有奏效。要麼保持不變,要麼NSDate默認爲2001年1月1日。(DateFormatter返回的結果無我相信)。謝謝你的想法。 – esbenr
或者我想。我的應用被Apple拒絕,因爲沒有內容。 (該應用程序使用日期來獲取內容。)我根據蘋果的回覆編輯了我的問題。 – esbenr
我很確定我不瞭解NSDate。所以我的問題可能是我沒有在我的所有日歷格式化器上設置時區?我會嘗試將所有格式化程序設置爲GMT。但我如何驗證它的工作原理?在模擬器上設置時區是不可能的。我如何「模擬」從另一個時區測試應用程序? – esbenr