2
int hour = [[array objectAtIndex:0] intValue]; //hour = 17
int min = [[array objectAtIndex:1] intValue]; //min = 51
NSLog(@"hour value is %d",hour);
NSLog(@"min value is %d",min);
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:[NSDate date]];

int year = [components year];
int month = [components month];
int day = [components day];
NSDateFormatter  *dateFormatter = [[NSDateFormatter alloc]init];
dateFormatter.timeStyle = NSDateFormatterNoStyle;

[components setYear:year];
[components setMonth:month];
[components setDay:day];
[components setHour:hour];
[components setMinute:min];
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] ;
NSDate *itemDate = [cal dateFromComponents:components];
NSLog(@"the date is %@",itemDate);

出力: 日付は 2012-11-03 01:00:00 +0000 です。しかし、出力を 2012-11-03 17:51:00 にしたい..どうすれば取得できますか?何が間違っていますか?

4

2 に答える 2

0

あなたの問題は、NSDateオブジェクトが独自の現在のタイムゾーンを使用して作成されることを理解していないという単純な問題のようですが、UTC を使用NSLogして説明を出力します。NSDateあなたはPDTにいるように見えるので(米国で時計が変わる今週末後半にPSTになります)、NSLog希望の日付/時刻を表示する必要がありますが、7時間(今週末は8時間後)ずれているように見えます.

ローカル タイムゾーンで日付を表示するには、 を使用してNSDateFormatterを に変換しNSDateますNSString

于 2012-11-03T05:32:12.623 に答える