2016-07-16 77 views
-2

簡單的問題,煩人的問題。 我有一個日期選擇器,我選擇一個時間(比如上午11點)。然後是一個連接到方法的按鈕,將該時間打印到控制檯。字面上只是一個五線項目。打印到控制檯的時間顯示一小時之前,無論我什麼時候設置(所以,如果我設置了上午11點,它打印上午10點等)。我的Mac上的時區設置正確,時鐘顯示正確的時間。我看過對堆棧溢出,並看到一些很長的答案涉及NSCalendar和組件等...但我敢肯定這應該是一個行的事。在我繼續設置我的Mac之前,請幫助。由於的NSDate的日期方法將在返回錯誤的時間

--------------------------------------------- - - - - - - - - - 編輯 - - - - - - - - - - - - - - - - -------------------------------

好吧,我會後一些代碼,看它是否更清晰:

- (IBAction)setReminder:(id)sender{ 

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; 
    NSString *dateString = [formatter stringFromDate:self.datePicker.date]; 


    NSLog(@"Setting a reminder for: %@", dateString); 

    NSDate *date = [formatter dateFromString:dateString]; 

    NSLog(@"another proof that date is right: %@", date); 

    UILocalNotification *note = [[UILocalNotification alloc]init]; 
    note.alertBody = @"This is a reminder!"; 
    note.fireDate = date; 

    [[UIApplication sharedApplication] scheduleLocalNotification:note];} 

第一的NSLog返回正確的時間,但第二個的NSLog返回一個小時前的一小時設置使用的日期選擇器,所以通知永遠不會觸發。我究竟做錯了什麼? tx

+2

請告訴我們,你有嘗試的代碼。 –

+0

是的,發佈你的代碼,你已經嘗試! – Lion

+0

我編輯了一些代碼的文本。 – Paul

回答

0

日期選擇器總是以UTC形式返回日期。

創建dateformatter並得到弦,它就會顯示出預期的時間。

-1

請使用將幫助你

NSDateFormatter *formattor=[[NSDateFormatter alloc]init]; 
[email protected]"yyyy-MM-dd HH:mm:ss"; 
NSString *date_string=[formattor stringFromDate:self.datePicker.date]; 
NSLog(@"%@",date_string); 
+0

這是一個良好的開端,這是我曾經嘗試過,但日期本身仍然是一個小時前。 Pz看看編輯。 – Paul