0
double duration = 20; // duration is in seconds 

NSDate* durationDate = [[NSDate alloc]initWithTimeIntervalSinceReferenceDate:duration];

NSDateFormatter *formatter = nil;


formatter = [[[NSDateFormatter alloc] init] autorelease];
[formatter setDateFormat:@"mm:ss"];

NSString *durationString=[formatter stringFromDate:durationDate];//here durationString should have 20 

しかし、私は30:20になっていますか?この30分が追加されるところから。私は同じ結果よりも大きな数字を与えようとしました

これについての考えとこれを解決する方法を教えてください

4

1 に答える 1

5

あなたはおそらくインド標準時にいますか?

基準日はグリニッジ標準時の深夜0時に定義されています。ISTはGMT+5:30です。

したがって、基準日に20秒を追加すると、GMTの深夜0時を20秒過ぎます。次に、日付フォーマッターを作成し、それ以外に何も設定しない場合、デバイスの自然なタイムゾーンで動作します。つまり、時間の終わりに分と秒を要求すると、30分20秒になります。

NSDatesは絶対時間であり、任意のタイムゾーンまたはカレンダーの抽象です。5つの別々のタイムゾーンにある5つのデバイスがすべて[NSDate date]同時に呼び出して現在の時刻を取得する場合、それらはすべて同じ値のオブジェクトを取得します。

NSDateFormatterとを組み合わせて、NSDate分、秒、時間、月、年などを決定します。NSCalendarNSTimeZone

于 2012-05-24T17:07:13.617 に答える