網頁

2012年5月9日 星期三

iOS小抄_NSDate與NSString的轉換

UIDatePicker是一個很常會使用到的物件,若是需要設定日期時間,或是取得使用者滾動後的日期時間,都可以藉由date的屬性取得或設定。

NSDate *selectDate = datepicker.date;

但我們取得的格式是NSDate,若是要顯示在UILabel之類的物件上,就必須要轉換為NSString,也可以在轉換的過程中,改為自己需要的格式。

若是你與我相同,為了讓使用者可以選年,使用了兩個UIDatePicker,一個顯示年月日,一個顯示時間,那麼可以利用以下方式取得日期與時間的NSString。

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"yyyy/MM/dd"]; NSString *strDate = [dateFormat stringFromDate:datepicker.date]; [dateFormat setDateFormat:@"HH:mm:ss"]; NSString *strTime = [dateFormat stringFromDate:timepicker.date]; NSString *selectDateTime = [NSString stringWithFormat:@"%@ %@",strDate,strTime]; NSLog(@"%@", selectDateTime); [dateFormat release];

datepicker與timepicker為使用的UIDatePicker名稱,最後selectDateTime輸出結果為:1981/12/20 12:15:00。

某些時候我們會希望UIDatePicker可以有初始值,也可以藉由類似的方法來設定。

-(void)setDateTime:(NSString *)setDateTime { NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"yyyy/MM/dd HH:mm:ss"]; NSDate *date = [dateFormat dateFromString:setDateTime]; [dateFormat release]; datepicker.date = date; timepicker.date = date; }

6 則留言:

  1. 請問您的確定與取消是如何製作??
    可否給予小弟指示

    謝謝

    回覆刪除
  2. 我的確定鈕跟取消鈕都會呼叫一個自訂的delegate,然後再在那邊讀取使用者選取的日期跟時間。

    至於怎麼做自己的delegate,可以參考http://wangshifuola.blogspot.com/2012/02/iosdelegate.html

    回覆刪除
  3. 你好~請問一下要如何把兩個picker放在同一個subview呢?謝謝^^

    回覆刪除
  4. 直接拉兩個picker到nib檔就可以了 @.@

    回覆刪除
  5. ola你回超快的拉~請教一下如果沒有xib or nib是直接靠程式產生subview這樣的話可以嗎?

    回覆刪除
  6. 用程式碼也可以,就是使用addsubview就可以了。

    回覆刪除