2012-01-30 17 views
0

次のコードがあります。私がiOS 3.1.3デバイスで実行すると(それを乗り越えよ!)期待どおりに動作しますが、シミュレータ(iOS 5および4.3)で実行すると、1分15秒(9:01:15)になります)。これは私のコード、シミュレータのバグ、またはiOS 4+のバグのためですか?NSDateComponentsがシミュレータ上で動作する

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
NSDateComponents *components = [calendar components:(NSHourCalendarUnit | NSMinuteCalendarUnit) fromDate:[NSDate date]]; 
components.hour = 9; 
components.minute = 0; 
NSDate *date = [calendar dateFromComponents:components]; // <-- date is off on simulator 

ありがとうございました!

答えて

2

なぜこれが当てはまるのか完全に理解できませんが、これは非常に長い時間前にdateFromComponents:を使用して日付を作成すると発生します。具体的には、カットオフは1847年12月1日であると思われます。その日の午前12時より前の時刻は、1535秒に1 となります。

components.hourcomponents.minuteだけを設定すると、1AD、1ADからの日付が表示されるため、これが起こっています。

あなたはこのように、最近の多くのものに年、月、日を設定した場合:

2012-02-06 09:00:00 +0000 

components.year = 2012; 
components.month = 2; 
components.day = 6; 

その後は、適切な出力を(私はiOSのシミュレータで得たもの)買ってあげます

+0

ああ、それはそれを修正します。ありがとう! – jrtc27

+1

(Wikipediaによると)これは、企業が英国の標準時間に切り替わったためです(http://en.wikipedia.org/wiki/Railway_time#Great_Britain)。 – jrtc27

+0

おっとり - あなたの答えを受け入れるのを忘れてしまった! – jrtc27

関連する問題