Xcode4 执行代码时给出错误的时间
我正在创建一个简单的闹钟应用程序。问题是我在日志中得到了错误的输出日期,我不知道为什么。请设法解决我的问题。下面是我的代码: 下面的代码用于init方法,然后正常工作,而我将下面的代码用于viewdidLoad,那么它不工作Xcode4 执行代码时给出错误的时间,xcode4,nsdate,Xcode4,Nsdate,我正在创建一个简单的闹钟应用程序。问题是我在日志中得到了错误的输出日期,我不知道为什么。请设法解决我的问题。下面是我的代码: 下面的代码用于init方法,然后正常工作,而我将下面的代码用于viewdidLoad,那么它不工作 NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar]; // Get the current date NSDate *pickerDate = [self.datePicker date]
NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
// Get the current date
NSDate *pickerDate = [self.datePicker date];
// Break the date up into components
NSDateComponents *dateComponents = [calendar components:( NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit )
fromDate:pickerDate];
NSDateComponents *timeComponents = [calendar components:( NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit )
fromDate:pickerDate];
NSDateComponents *dateComps = [[NSDateComponents alloc] init];
[dateComps setDay:[dateComponents day]];
[dateComps setMonth:[dateComponents month]];
[dateComps setYear:[dateComponents year]];
[dateComps setHour:[timeComponents hour]];
[dateComps setMinute:[timeComponents minute]];
[dateComps setSecond:[timeComponents second]];
NSDate *itemDate = [calendar dateFromComponents:dateComps];
NSLog(@"date components are:>>%@",dateComps);
NSLog(@"Item date is ::>>%@",itemDate);
[dateComps release];
在这种情况下,虽然打印对象比它显示的日期和时区错误,但在这里。
请帮忙解决这个问题
@塞缪尔试着输入:
NSDate *pickerDate = [NSDate date];
验证您的代码是否存在问题。如果执行此操作后在NSLog中获得了正确的日期,则代码正常,并且问题可能出在您可能使用的UIDatePicker控件中?那就试着去做吧
NSDate *pickerDate = [self.datePicker date];
NSLog(@"Date = %@", pickerDate);
首先验证是否从日期选择器控件获取正确的值
此代码应放在viewDidLoad方法中。我从上面完全复制了你的代码,它在我的应用程序上运行得非常好
问:您是说您的代码在init中工作得很好,但在viewDidLoad方法中工作得不正确吗?经过多次搜索,找到了原因 当选取到pickerviewcontroller中的任何日期时,始终为5+000 gmt格式 如果我们需要将日期转换为本地时区,我们需要在项目中使用DateFormatter类来实现下面的代码
NSDateFormatter* df_local = [[NSDateFormatter alloc] init];
[df_local setTimeZone:[NSTimeZone localTimeZone]];
[df_local setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
// [df_local stringFromDate:date];
NSString *strForArr=[self.arForSubTitle objectAtIndex:0];
NSString *newStr = [strForArr substringToIndex:[strForArr length]-5];
NSDate *theDate = [df_local dateFromString:newStr];
NSLog(@"%@",[theDate description]);
谢谢和问候
@塞缪尔