3

この形式で日付を設定したい MMM dd, yyyy HH:mm, 私はこれのためにコードを書きましたが、私が知らない何かが間違っています.

NSDate *date = [NSDate date];
[format setDateFormat:@"MMM dd, yyyy HH:mm"];
NSLog(@"My date with out format = %@",date);
date = [format dateFromString:[format stringFromDate:date]];
NSLog(@"My date is = %@",date);

出力

フォーマットなしの私の日付 = 2012-06-22 09:53:46 +0000
私の日付は = 2012-06-22 09:53:00 +0000

私が間違っているところを助けてください。

前もって感謝します。

4

4 に答える 4

4

まず、NSDate日付のフォーマットについて何も知りません。そこNSDateFormatterが入ります。

date = [format dateFromString:[format stringFromDate:date]];

ここで行っているのは、指定された形式の文字列を作成することです。これにより、タイムゾーンも削除されます。その文字列から新しい日付を作成します。タイムゾーンがなくなったため、タイムゾーンGMTとしての日付になります。

しかし、これでもNSDateが保持され、デフォルトのタイムゾーンが に設定されGMTます。

stringFromDate:メソッドが返す文字列を取得するだけで日付を表示したい場合は、新しい日付オブジェクトを作成する必要はありません。このようにするとうまくいきます:

NSDate *date = [NSDate date];
[format setDateFormat:@"MMM dd, yyyy HH:mm"];
NSLog(@"My date with out format = %@",date);
NSString *dateString = [format stringFromDate:date];
NSLog(@"My date is = %@",dateString);
于 2012-06-22T10:12:32.813 に答える
1

フォーマッタに秒を表示するように指示していません。これを行うには、「HH:mm: ss」を追加します

NSDate *date = [NSDate date];
[format setDateFormat:@"MMM dd, yyyy HH:mm:ss"];
NSLog(@"My date with out format = %@",date);
date = [format dateFromString:[format stringFromDate:date]];
NSLog(@"My date is = %@",date);
于 2012-06-22T10:08:38.907 に答える
1

これを試して:

NSDateFormatter *format = [[NSDateFormatter alloc] init];
    NSDate *date = [NSDate date];
    [format setDateFormat:@"MMM dd, yyyy HH:mm:ss"];
    NSLog(@"My date with out format = %@",date);
    NSString *dateStr = [format stringFromDate:date];

    //date = [format dateFromString:[format stringFromDate:date]];
    NSLog(@"My date is = %@",dateStr);
于 2012-06-22T10:14:38.043 に答える
0
 [format setDateFormat:@"YYYY-dd-MM HH:mm:ss z"];
于 2012-06-22T10:09:01.877 に答える