-2

12時間形式に変換しようとしてNSStringいます。NSDate(iOS 6)

コード :

NSString *Bdt = @"05/23/2012 08:00 AM"
NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
[df setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
[df setDateFormat:@"MM/dd/yyyy hh:mm a"];
NSDate *bd = [df dateFromString:Bdt];
NSLog(@"%@",bd);

出力:

2012-05-23 08:00:00 +0000 2012-05-23 08:00 AM である必要があります

コードの何が問題なのですか?

ありがとう

4

2 に答える 2

3

何も問題はありません。特定の形式で NSString を作成するのとは大きく異なる NSLog に NSDate を出力しています。

内部 NSDate 表現と文字列フォーマットを混同しているようです。NSDate は、日付を人間が表す方法とは異なる方法で内部的に保存します。NSString が文字列を最終的にエンコードしたくない形式で格納するのと同じように、たとえば. ASCII または UTF-8。NSLog を呼び出すと、- (NSString *)descriptionまたは によって返される文字列に従って日付を示す診断メッセージが表示されます- (NSString *)debugDescription

于 2013-03-16T09:08:47.293 に答える
3

おしゃれにデートしたい2012-05-23 08:00 AMなら

dateformatter を作成し、setDateFormat をyyyy-MM-dd hh:mm a

NSString *Bdt = @"05/23/2012 08:00 AM";
NSDateFormatter *df = [[NSDateFormatter alloc] init] ;
[df setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
[df setDateFormat:@"MM/dd/yyyy hh:mm a"];
NSDate *bd = [df dateFromString:Bdt];

NSDateFormatter *dateFormatter=[NSDateFormatter new];
[dateFormatter  setDateFormat:@"yyyy-MM-dd hh:mm a" ];
NSString *datestr=[dateFormatter stringFromDate:bd];
NSLog(@"%@",datestr);

*注: 私は ARC を使用しているため、オブジェクトは解放/自動解放されません。

編集:

NSDateこの形式のみになります: 2012-05-23 08:00:00 +0000.

他の形式の場合は、NSString.

于 2013-03-16T07:57:32.813 に答える