0

このコードを考えると:

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"yyyyMMdd"];
NSArray *datesArray = @[@"20130326", @"20130327", @"20130328", @"20130329", @"20130330", @"20130331", @"20130401"];
for (NSString *dateString in datesArray) {
    NSDate *date = [dateFormatter dateFromString:dateString];
    NSLog(@"date: %@", date);
}

これは私のタイムゾーン (EST) での出力です。

date: 2013-03-26 04:00:00 +0000
date: 2013-03-27 04:00:00 +0000
date: 2013-03-28 04:00:00 +0000
date: 2013-03-29 04:00:00 +0000
date: 2013-03-30 04:00:00 +0000
date: 2013-03-31 04:00:00 +0000
date: 2013-04-01 04:00:00 +0000

[設定] -> [一般] -> [日付と時刻] に移動し、タイムゾーンをヨルダンのアンマン (GMT+3) に設定すると、同じコードの出力が次のようになります。

date: 2013-03-25 22:00:00 +0000
date: 2013-03-26 22:00:00 +0000
date: 2013-03-27 22:00:00 +0000
date: (null)
date: 2013-03-29 21:00:00 +0000
date: 2013-03-30 21:00:00 +0000
date: 2013-03-31 21:00:00 +0000

なんで?

4

3 に答える 3

3

確かなことはわかりませんが、28 日にヨルダンのアンマンで時計が変わるのはおそらく偶然ではありません: http://www.evi.com/q/when_do_the_clocks_change_in_amman_jordan

私の疑いでは、時計は 2013-03-28 21:59:59 から 2013-03-28 23:00:00 にジャンプするため、2013-03-28 22:00:00 という時刻はアンマンには存在しません。 、ヨルダンのタイムゾーン。

于 2013-01-16T23:42:02.087 に答える
1

1970 年から現在まで、アンマンで DST が開始された日付nilが返されるまで、何年、何ヶ月、何日もループを実行しました。

于 2013-01-17T00:03:35.463 に答える
0

dateFormatter文字列から値を設定するときは、タイムゾーンを指定する必要があると思います。この質問を参照してください。まったく同じ問題ではありませんが、役立つ可能性があります。

お役に立てれば

于 2013-01-16T23:34:58.870 に答える