0

軍事時間で保存された日付を表す文字列があります。この文字列を 12 時間でラベルに表示したいと考えています。ここに私のコードスニペットがあります:

NSTimeZone *timeZone = [NSTimeZone localTimeZone];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:timeZone];  
[dateFormat setDateFormat:@"MM/dd/yyyy hh:mm:ss"];
NSLog(@"Current Date: %@", [dateFormat stringFromDate:[NSDate date]]);
NSLog(@"Sent date: %@",[myPlanData valueForKey:@"planDate"]);
NSDate *aDate =[dateFormat dateFromString:[myPlanData valueForKey:@"planDate"]];
NSLog(@"Converted date is: %@",aDate);
NSString *planDateString = [dateFormat stringFromDate:aDate];
NSLog(@"The converted date string is: %@",planDateString);
planDateLabel.text=planDateString;

出力は次のとおりです。

現在の日付: 06/28/2012 10:08:48 - (私の日付フォーマッターは正しいように見えますか?)

送信日: 2012/06/30 20:47:34 - (これは送信される値です)

変換された日付: (null) - (ここで壊れます!)

変換された日付文字列は次のとおりです: (null)


日付形式を次のように変更すると

[dateFormat setDateFormat:@"MM/dd/yyyy HH:mm:ss"];

すべてがスムーズに進みますが、ミリタリータイムが表示されてしまいます。それを12時間に変換してラベルに表示したいだけです

4

1 に答える 1

1

さてここに私がそれを修正することになった方法があります

NSTimeZone *timeZone = [NSTimeZone localTimeZone];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:timeZone];  
[dateFormat setDateFormat:@"MM/dd/yyyy HH:mm:ss"];

NSDateFormatter *dateFormatback = [[NSDateFormatter alloc] init];
[dateFormatback setTimeZone:timeZone];
[dateFormatback setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];

NSLog(@"Current Date: %@", [dateFormat stringFromDate:[NSDate date]]);
NSLog(@"Sent date: %@",[myPlanData valueForKey:@"planDate"]);
NSDate *aDate =[dateFormat dateFromString:[myPlanData valueForKey:@"planDate"]];
NSLog(@"Converted date is: %@",aDate);
NSString *planDateString = [dateFormatback stringFromDate:aDate];
NSLog(@"The converted date string is: %@",planDateString);

planDateLabel.text=planDateString;

これが最善の方法なのか正しい方法なのかはわかりませんが、機能します。

于 2012-06-29T01:33:57.127 に答える