2012-02-03 7 views
0

私は簡単な目覚まし時計アプリケーションを作成しています。問題は、ログに出力される日付が間違っていて、理由がわからないことです。私の問題を解決しようとしてください。私はそれよりも印刷対象が示している間、それはそれでコード実行中に間違った時間が与えられる

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]; 

に動作していない私のviewDidLoadに次のコードを使用しながらの作業が適切である

次のコードはinitメソッドに使用している。以下は、私のコードです間違った日付とタイムゾーンの問題はここにあります。あなたのコードと、それは問題ではないことを確認するために

NSDate *pickerDate = [NSDate date]; 

: この問題を解決するために

@samuel

答えて

0

その

任意の日付がpickerviewcontrollerに選んだとき、我々は我々が必要とするためのローカルタイムゾーンで日付を変換する必要がある場合は、常にそれが唯一の000 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。

0

てみ入りを助けてください。それをした後にNSLogで正しい日付を取得したら、あなたのコードはOKであり、使用しているUIDatePickerコントロールに問題がある可能性がありますか?あなたが最初に日付ピッカーコントロールから適切な値を取得しているかどうかを確認するには、

NSDate *pickerDate = [self.datePicker date]; 
NSLog(@"Date = %@", pickerDate); 

を確認してください。

このコードはviewDidLoadメソッドに配置する必要があります。上のコードを正確にコピーして、アプリケーションで完全に動作します。

質問:コードはで完璧に機能しますが、viewDidLoadメソッドでは正しく機能していると言っていますか?多くの検索後

関連する問題