2012-05-04 50 views
0

我是iWorld的iOS开发人员。 我以前开发过几款iPhone/iPad应用程序。 我无法在iPhone上多次获取正确的时间信息。我认为这是由于本地化。获取没有时间部分或时区差异的时间

例如,我有代码来获取今天的时间截断。 (例如:“05-04-2012 00:00:00”) 但是这段代码总是在8小时前返回到我的预期。 (比如:“2012年5月3日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

那你几点预计;当地时间或UTC? – trojanfoe

+0

我想知道要知道正确的午夜时间。因为我必须将日期与数据库日期进行比较。例如,今天我必须找到05-04-2012 00:00:00和05-05-2012 00:00:00之间的记录。 – Pei

+0

那么你想本地时间或UTC? – trojanfoe

回答

0

我发现代码,计算正确的深夜时段 现在我发现下面的代码日志“今天是2012年5月7日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); 

谢谢你。

0

设置时区为UTC

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"UTC"]; 
    [dateFormatter setTimeZone:timeZone]; 
+1

他想当地时间,所以应该使用[NSTimeZone localTimeZone] – lnafziger

+0

哦,没有读得够多。是的,lnafziger说。 –