3

奇妙な時間の計算があります。次のログを取得します。

NSLog(@"Load Data in event %@ %d",currentDate,[currentDate hour]);

ログで:

Load Data in event 2013-09-18 06:30:00 +0000 2147483647

currentDate は NSDate であり、NSDate のカテゴリは次のとおりです。

- (int)hour
{
     NSCalendar *calendar = [NSCalendar currentCalendar];
     NSDateComponents *components = [calendar components:(NSHourCalendarUnit |    NSMinuteCalendarUnit) fromDate:self];
     [components setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];
     NSInteger hour = [components hour];
     return hour;
}
4

3 に答える 3

2

削除する

[components setTimeZone:[NSTimeZone timeZoneWithName:@"GMT"]];

NSDateComponentsタイムゾーンの計算を実行しないことに注意してください。値を照会する前にタイムゾーンを設定しても意味がありません。

于 2013-09-16T09:32:11.547 に答える
-1

以下のコードを使用してみてください:

NSString *strCurrentDate;
NSString *strNewDate;
NSDate *date = [NSDate date];
NSDateFormatter *df =[[NSDateFormatter alloc]init];
[df setDateFormat:@"yyyy-MM-dd HH:mm a"];
strCurrentDate = [df stringFromDate:date];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
NSDate *newDate= [calendar dateByAddingComponents:components toDate:date options:0];
[df setDateStyle:NSDateFormatterMediumStyle];
[df setTimeStyle:NSDateFormatterMediumStyle];
strNewDate = [df stringFromDate:newDate];
NSLog(@"New Date and Time: %@",strNewDate)
于 2013-09-16T09:32:26.617 に答える