1

私のアプリケーションでは、日付が 01-22-12(MM-dd-yy) の NSString を取得しています。今、その文字列を NSDate に変換したいと思います。以下のコードを使用しました。しかし、それは 2012-01-04 05:00:00 +0000 として日付を与えています

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"MM-dd-yy"];
NSDate *dateFromString = [dateFormatter dateFromString:self.selectedWeek];

文字列を NSDate に変換する適切な方法は何ですか?

4

2 に答える 2

1

あなたの元の質問から、あなたが望むかどうかは完全にはわかりません:

1 文字列をNSDate.

また

NSString2 インスタンスから元の日付を取得できるようにしNSDateます。

あなたのコードは基本的に正しいです。私はそれのわずかに適応したバージョンを実行しましたが、うまくいくようでした:

NSString *dateString = @"01-22-12";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"MM-dd-yy"];
NSDate *date = [dateFormatter dateFromString:dateString];
NSString *outString = [dateFormatter stringFromDate:date];

NSLog(@"%@",date);
NSLog(@"%@",outString);

これにより、次のものが生成されました。

2013-02-24 09:57:24.352 datesAgain.m.out[787:707] 2012-01-22 00:00:00 +0000
2013-02-24 09:57:24.352 datesAgain.m.out[787:707] 01-22-12

いずれにせよ、結果はあなたが探していたもののようです。あなたが間違った値を取得している理由は、self.selectedWeekあなたが思っているような値を持っていないからだと思います。デバッガーまたはNSLog. 別のフォーマット文字列を使用して別の場所で作成している場合は、扱いが難しく、少し直感的でない可能性があることに注意してください。たとえばs、秒を意味しますが、秒Sの端数を意味します。ドキュメントはこちらから入手できます- 最新の Unicode フォーマット標準はこちら(ios6.0/OSX 10.8) - 以前のすべての関連標準と同様に、以前のリンクにもリンクされています

于 2013-02-24T10:13:15.810 に答える
0

descriptionWithCalendarFormat:timeZone:locale:を使用できます。

NSString * mydate =  [dateFromString descriptionWithCalendarFormat:@"%Y-%m-%d"
                                timezone:nil
                                  locale:nil];
于 2013-02-24T06:57:23.657 に答える