我是iWorld的iOS开发者。 我以前开发过几款iPhone / iPad应用程序。 我无法在iPhone上多次获得正确的时间信息。我认为这是由于本地化。
例如,我有代码来获取今天的时间截断。 (例如:“05-04-2012 00:00:00”) 但该代码总是在8小时前返回到我预期的状态。 (例如:“05-03-2012 16:00:00”) 我工作的代码如下。
NSDate *today = [NSDate date];
NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calender components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:today];
today = [calender dateFromComponents:components];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM-dd-yyyy hh:mm:ss"];
NSString *todayString = [formatter stringFromDate:today];
NSLog(@"Today is %@", todayString);
我想听听您解决此问题。 谢谢你的时间。
答案 0 :(得分:0)
将时区设为UTC
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"];
[dateFormatter setTimeZone:timeZone];
答案 1 :(得分:0)
我发现计算正确的午夜时间的代码。 现在我发现以下代码记录“今天是05-07-2012 00:00:00”而不是“05-06-2012 16:00:00”
NSDate *today = [NSDate date];
NSCalendar *calender = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calender components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:today];
today = [calender dateFromComponents:components];
today = [today dateByAddingTimeInterval:[[NSTimeZone localTimeZone] secondsFromGMT]];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM-dd-yyyy hh:mm:ss"];
NSString *todayString = [formatter stringFromDate:today];
NSLog(@"Today is %@", todayString);
谢谢你。