2010-03-17 115 views
3

林建設一個日曆,並找出了一個月,我做NSDateFormatter模擬器上不正確的日期,在設備上正確的日期

[formatter setDateFormat:@"e"]; 
int startDay = [[formatter stringFromDate:newDate] intValue]; 

的第一天,在此正常工作的設備和本月1日是正確的一天。但在模擬器上,這是第二天。雖然它對模擬器不太重要,但卻讓我瘋狂地認爲自己做錯了事情。我試圖設置格式化程序的區域設置,但沒有區別,我認爲不應該。任何人都可以對此有所瞭解嗎?

在旁註中是否有更好的方法來構建日曆?

更新:它似乎如果我不設置它在設備上工作正常的區域設置,但在模擬器上它不。如果我確實將語言環境設置爲en_US,則它們都不起作用。我在澳大利亞,如果這改變了什麼,但我很確定美國和澳大利亞都有相同的日曆:/

+0

一個可能的重複..... http://stackoverflow.com/questions/1803169/nsdateformatter-gives-different-values-on-device-and-模擬器-what-is-work-arou – 2010-03-17 06:25:37

+0

不,這是一個格式問題,我的設備與模擬器相比有時間差異,即使我只是沒有時間通過​​一個日期。 – Rudiger 2010-03-17 23:31:10

回答

0

似乎沒有解決方案。在設備上更改時區不會導致問題,所有日誌輸出都會報告正確的時區,但NSDate似乎從模擬器上的兩個不同位置拉出時區,可能是Cupertino和本地時區。

尋找其他人的解決方案,以獲得本月的第一天它是我的代碼相同(奇怪,因爲我沒有複製),並沒有人報告過問題,也許這些用戶在美國等問題沒有出現。更改計算機上的時區也不會執行任何操作。

0

這聽起來像正確的行爲,取決於你傳遞的日期。NSDate對應於世界時的精確點。那時,它可能是一個時區的星期一,另一個時區的星期二。您可能需要[[NSCalendar currentCalendar] firstWeekDay]

+0

嗯,我以爲我讀的NSCalendar不是在iPhone上可用,但現在我看着它。我會看看 – Rudiger 2010-03-17 08:30:27

+0

[[NSCalendar currentCalendar] firstWeekDay]返回一週中的第一天,即星期一。你也可以設置它,所以它也是一個星期天。無論哪種方式,它每個月只返回1。仍在研究通過NSDate。我沒有設置時間或時區,只是一個日期,所以不能確定發生了什麼。 – Rudiger 2010-03-17 23:26:04

0

如果模擬器和設備上有不同的日曆,該怎麼辦?一個週一是第一個週日,另一個週日。可能這可能是問題的原因...

+1

電話同步它的日期從計算機,我從來沒有在電話的其他部分說日曆的問題。 – Rudiger 2010-08-25 20:52:48