我正在创建一个简单的闹钟应用程序。问题是我在日志中得到错误的输出日期,我不知道为什么。请尝试解决我的问题。以下是我的代码:
以下代码用于init方法然后工作正常,而我将以下代码用于我的viewdidLoad然后它不起作用
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];
虽然打印对象比它显示错误的日期和时区问题aries在这里。 请帮助解决这个问题
@samuel
答案 0 :(得分:0)
尝试输入:
NSDate *pickerDate = [NSDate date];
验证您的代码没有问题。如果您在执行该操作后在NSLog中获得了正确的日期,那么您的代码就可以了,问题可能出在您可能正在使用的UIDatePicker控件中?那么接着尝试
NSDate *pickerDate = [self.datePicker date];
NSLog(@"Date = %@", pickerDate);
验证您是否首先从日期选择器控件中获取正确的值。
此代码应放在viewDidLoad方法中。我从上面完全复制了你的代码,它完全适用于我的应用程序。
问题:您是说您的代码完全在 init 中工作,但在viewDidLoad方法中工作不正确?
答案 1 :(得分:0)
经过多次搜索后找到原因
当挑选到pickerviewcontroller的任何日期时,只有五个+50 gmt格式
如果我们需要将日期转换为本地时区,我们需要将dateformater类用于该项目的下面代码。
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]);
谢谢和问候
@samuel。