2

これは繰り返しの質問であることは知っていますが、stackoverflow と google で多くの同様の質問を検索した後、解決策はどれもうまくいきませんでした。

DBから受け取った日付を文字列形式に変換してiPhoneアプリに表示しようとしています。

次の方法で日付を文字列に変換していますが、[dateFormat stringFromDate:beginDate]常に nil を返します。

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"MMM dd hh:mm a"];
NSString *dateString = [dateFormat stringFromDate:beginDate];
NSLog(@"date: %@", dateString);
[dateFormat release];

受信したサーバー NSDate の形式は次のとおりです。

2012-05-23 13:06:51.394+1000

そして、私はそれをしたいです

May 25 13:06 PM
4

5 に答える 5

5

最初に beginDate 文字列を実際の NSDate に変換してから実行する必要があります。

NSString *beginDateString  = [arr_data objectAtIndex:1];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSSZ"];
NSDate *beginDate = [formatter dateFromString:beginDateString];

[formatter setDateFormat:@"MMM dd hh:mm a"];
NSString *dateString = [formatter stringFromDate:beginDate];
NSLog(@"date: %@", dateString);

質問で、出力したいMay 25 13:06 PMが、実際には出力されることに注意してくださいMay 25 01:06 PM。(13:06 は、12 時間制ではなく 24 時間制を使用するため、午前/午後は必要ありません。)

于 2012-05-23T04:15:26.137 に答える
5

beginDate の型は何ですか? NSString の場合は、dateFromStringNSDateFormatter のメソッドを使用して、まず NSDate に変換します。

NSString *beginDate = @"2012-05-23 13:06:51.394+1000";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

// Set the format of the dateFormatter to the date format of the server
dateFormatter.dateFormat = @"yyyy-MM-dd HH:MM:ss.SSSZ";
// Convert the NSString to NSDate
NSDate* date = [dateFormatter dateFromString: beginDate];

// Set the format of dateFormatter to your own format
dateFormatter.dateFormat = @"MMM dd hh:mm a";
// Convert NSDate to your own format of date
beginDate = [dateFormatter stringFromDate: date];
于 2012-05-23T03:50:28.813 に答える
2

上記のコードに問題はありません。現在の日付で問題なく動作します。交換するだけ

NSString *dateString = [dateFormat stringFromDate:beginDate];

NSString *dateString = [dateFormat stringFromDate:[NSDate date]];

そして動作します。

に問題があるようbeginDateです。

于 2012-05-23T03:35:41.207 に答える
0

beginDate の形式は「2013-09-29 14:57:48.0」のようですが、dataFormate は

[dFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]

「yyyy-MM-dd HH:mm:ss.0」に変更すればOK

于 2013-09-29T07:00:24.943 に答える