2012年3月1日 星期四

NSDateFormatter設定日期格式

日期常常會因不同的需求,以不同的型態出現,在iOS雖然會依你iphone/ipad上設定的國別自動調整日期習慣的顯示方式(例如台灣格式是年/月/日,美國格式就變成月/日/年), 但是有時侯你還是有需要自已設定成需要的格式。在這裡示範樂田麵包屋裡兌換商品畫面裡2個日期的實作:


首先,先講右邊圓形郵戳的實作:


先在.h宣告一個UILabel來讓日期顯示在畫面上


IBOutlet UILabel *todayDate;//宣告一個UILabel叫todayDate

接下來在.m裡設置一個getDate這個程序來格式化這個日期

- (void)getDate{
    NSDate *date = [NSDate date]; //先取得現在的日期時間
    NSDateFormatter *form = [[NSDateFormatter alloc] init]; //宣告一個NSDateFormatter用來格式化日期
    [form setDateFormat:@"yyyy.MM.dd"]; //把日期顯示的格式設成“yyyy.MM.dd"各代表的意義請參照下面列表
    NSString *dateStr=[form stringFromDate:date]; //將格式化後的日期格式設成dateStr這個字串中
    todayDate.text = dateStr; //設定todayDate這個label的文字為dateStr這個字串的值
}

日期格式代表意義
﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣
yyyy = 年(4位數), yy = 年(最後2位數),MM = 月(1~12),MMM = 月(英文縮寫),MMMM = 月(英文完整)
K = 時(12小時制),H = 時(24小時制),mm = 分,ss = 秒,aa = 午前/午後(AM/PM)
dd = 日,EEE = 星期(英文縮寫),EEEE = 星期(英文完整)
﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣﹣

接下來說明左側的“賞味期限”的日期格式,賞味期限的日期是今天後的2天。一樣先在.h宣告一個UILabel

IBOutlet UILabel *remainDate; //宣告一個UILabel叫remainDate

接下來在.m裡設置一個getRemainDate這個程序來格式化這個日期

- (void)getRemainDate{
     NSDate *date = [NSDate date]; //一樣先取得日期的日期
   //設定一個reserveDate是今天的日期加上2天,但是NSDate都是以秒處理,所以先算出2天一共是(2*24*60*60)秒, 用dateByAddingTimeInterval把算出來的秒數加到date這個我們剛取得的現在的日期中
   NSDate *reserveDate = [date dateByAddingTimeInterval:(2*24*60*60)];
      NSDateFormatter *form = [[NSDateFormatter alloc] init];//宣告一個NSDateFormatter用來格式化日期
   [form setDateFormat:@"MM/dd"];//把日期設為月/日的格式
   remainDate.text = [NSString stringWithFormat:@"%@",[form stringFromDate:reserveDate]];//跟上面例子最後2行一樣的功能,只是縮寫成一段就是變這個樣子
}

至於右邊郵戳怎麼轉15度角,請參考UIView 同時移動、旋轉、放大的作法

0 意見:

張貼留言