iOS開發之格式化日期時間

來源:互聯網
上載者:User

標籤:

在開發iOS程式時,有時候需要將時間格式調整成自己希望的格式,這個時候我們可以用NSDateFormatter類來處理。
例如:

//執行個體化一個NSDateFormatter對象NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];//設定時間格式,這裡可以設定成自己需要的格式[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];//用[NSDate date]可以擷取系統目前時間NSString *currentDateStr = [dateFormatter stringFromDate:[NSDate date]];//輸出格式為:2010-10-27 10:22:13NSLog(@"%@",currentDateStr);//alloc後對不使用的對象別忘了release[dateFormatter release];

 

字元說明

(:)

時間分隔字元。在某些地區設定中,可以使用其他字元表示時間分隔字元。時間分隔字元在格式化時間值時分隔小時、分鐘和秒。格式化輸出中用作時間分隔字元的實際字元由您的應用程式的目前範圍性值確定。

(/)

日期分隔符號。在某些地區設定中,可以使用其他字元表示日期分隔符號。日期分隔符號在格式化日期值時分隔日、月和年。格式化輸出中用作日期分隔符號的實際字元由您的應用程式的目前範圍性確定。

(%)

用於表明不論尾隨什麼字母,隨後字元都應該以單字母格式讀取。也用於表明單字母格式應以使用者定義格式讀取。有關更多詳細資料,請參見下面的內容。

d

將日顯示為不帶前置字元為零的數字(如 1)。如果這是使用者定義的數字格式中的唯一字元,請使用 %d。

dd

將日顯示為帶前置字元為零的數字(如 01)。

EEE

將日顯示為縮寫形式(例如 Sun)。

EEEE

將日顯示為全名(例如 Sunday)。

M

將月份顯示為不帶前置字元為零的數字(如一月表示為 1)。如果這是使用者定義的數字格式中的唯一字元,請使用 %M。

MM

將月份顯示為帶前置字元為零的數字(例如 01/12/01)。

MMM

將月份顯示為縮寫形式(例如 Jan)。

MMMM

將月份顯示為完整月份名(例如 January)。

gg

顯示時代/紀元字串(例如 A.D.)

h

使用 12 小時制將小時顯示為不帶前置字元為零的數字(例如 1:15:15 PM)。如果這是使用者定義的數字格式中的唯一字元,請使用 %h。

hh

使用 12 小時制將小時顯示為帶前置字元為零的數字(例如 01:15:15 PM)。

H

使用 24 小時制將小時顯示為不帶前置字元為零的數字(例如 1:15:15)。如果這是使用者定義的數字格式中的唯一字元,請使用 %H。

HH

使用 24 小時制將小時顯示為帶前置字元為零的數字(例如 01:15:15)。

m

將分鐘顯示為不帶前置字元為零的數字(例如 12:1:15)。如果這是使用者定義的數字格式中的唯一字元,請使用 %m。

mm

將分鐘顯示為帶前置字元為零的數字(例如 12:01:15)。

s

將秒顯示為不帶前置字元為零的數字(例如 12:15:5)。如果這是使用者定義的數字格式中的唯一字元,請使用 %s。

ss

將秒顯示為帶前置字元為零的數字(例如 12:15:05)。

f

顯示秒的小數部分。例如,ff 將精確顯示到百分之一秒,而 ffff 將精確顯示到萬分之一秒。使用者定義格式中最多可使用七個 f 符號。如果這是使用者定義的數字格式中的唯一字元,請使用 %f。

t

使用 12 小時制,並對中午之前的任一小時顯示大寫的 A,對中午到 11:59 P.M 之間的任一小時顯示大寫的 P。如果這是使用者定義的數字格式中的唯一字元,請使用 %t。

tt

對於使用 12 小時制的地區設定,對中午之前任一小時顯示大寫的 AM,對中午到 11:59 P.M 之間的任一小時顯示大寫的 PM。

對於使用 24 小時制的地區設定,不顯示任何字元。

y

將年份 (0-9) 顯示為不帶前置字元為零的數字。如果這是使用者定義的數字格式中的唯一字元,請使用 %y。

yy

以帶前置字元為零的兩位元字格式顯示年份(如果適用)。

yyy

以四位元字格式顯示年份。

yyyy

以四位元字格式顯示年份。

z

顯示不帶前置字元為零的時區位移量(如 -8)。如果這是使用者定義的數字格式中的唯一字元,請使用 %z。

zz

顯示帶前置字元為零的時區位移量(例如 -08)

zzz

顯示完整的時區位移量(例如 -08:00)

 

格式顯示

M/d/yy

12/7/58

d-MMM

7-Dec

d-MMMM-yy

7-December-58

d MMMM

7 December

MMMM yy

December 58

hh:mm tt

08:50 PM

h:mm:ss t

8:50:35 P

H:mm

20:50

H:mm:ss

20:50:35

M/d/yyyy H:mm

12/7/1958 20:50

 

IOS NSDate日期操作總結

1 // 目前時間建立NSDate

        NSDate *myDate = [NSDate date];

        NSLog(@"myDate = %@",myDate);

2 //從現在開始的24小時

        NSTimeInterval secondsPerDay = 24*60*60;

        NSDate *tomorrow = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay];

        NSLog(@"myDate = %@",tomorrow);

3//根據已有日期建立日期

         NSTimeInterval secondsPerDay1 = 24*60*60;

        NSDate *now = [NSDate date];

        NSDate *yesterDay = [now addTimeInterval:-secondsPerDay1];

        NSLog(@"yesterDay = %@",yesterDay);

 

 4//比較日期

        BOOL sameDate = [now isEqualToDate:yesterDay];

        NSLog(@"sameDate = %lu",sameDate);

        4.1//擷取較早的日期

        NSDate *earlierDate = [yesterDay earlierDate:now];

        NSLog(@"earlierDate  = %@",earlierDate);

        4.2//較晚的日期

        NSDate *laterDate = [yesterDay laterDate:now];

        NSLog(@"laterDate  = %@",laterDate);

 

        //兩個日期之間相隔多少秒

        NSTimeInterval secondsBetweenDates= [yesterDay timeIntervalSinceDate:now];

        NSLog(@"secondsBetweenDates=  %lf",secondsBetweenDates);

        //通過NSCALENDAR類來建立日期

        NSDateComponents *comp = [[NSDateComponentsalloc]init];

        [comp setMonth:06];

        [comp setDay:01];

        [comp setYear:2001];

        NSCalendar *myCal = [[NSCalendaralloc]initWithCalendarIdentifier:NSGregorianCalendar];

        NSDate *myDate1 = [myCal dateFromComponents:comp];

        NSLog(@"myDate1 = %@",myDate1);

 

        //從已有日期擷取日期

        unsigned units  = NSMonthCalendarUnit|NSDayCalendarUnit|NSYearCalendarUnit;

        NSDateComponents *comp1 = [myCal components:units fromDate:now];

        NSInteger month = [comp1 month];

        NSInteger year = [comp1 year];

        NSInteger day = [comp1 day];

        //NSDateFormatter實現日期的輸出

        NSDateFormatter *formatter = [[NSDateFormatteralloc]init];

        [formatter setDateStyle:NSDateFormatterFullStyle];//直接輸出的話是機器碼

        //或者是手動設定樣式[formatter setDateFormat:@"yyyy-mm-dd"];

        NSString *string = [formatter stringFromDate:now];

        NSLog(@"string = %@",string);

        NSLog(@"formater = %@",formatter);

 

 

//擷取日期格式對象

- (NSDateFormatter *)dateFormatter {

if (dateFormatter == nil) {

dateFormatter = [[NSDateFormatter alloc] init];

[dateFormatter setDateStyle:NSDateFormatterMediumStyle];

[dateFormatter setTimeStyle:NSDateFormatterNoStyle];

}

return dateFormatter;

}

 

NSDate與NSDateFormatter的相關用法

 

1.NSDateFormatter配合NSDate與NSString之間的轉化
  NSDateFormatter有下面2個方法:
  - (NSString *)stringFromDate:(NSDate *)date;//NSDate轉NSString
  - (NSDate *)dateFromString:(NSString *)string;//NSString轉NSDate
 
e.g.
 NSString *[email protected]"1900-01-01";
 NSDateFormatter *dateFormatter=[[NSDateFormatter alloc]init];
 [dateFormatter setDateFormat:@"yyyy-MM-dd"];
 NSDate *date=[dateFormatter dateFromString:dateString];
 [dateFormatter release];

 NSString轉NSDate與上面類似
 NSString *dateString=[dateFormatter dateFromString:[NSDate date]];

2.NSDateFormatter 的一些格式介紹
  [dateFormatter setDateFormat:@"yyyy年MM月dd日#EEEE"];EEEE為星期幾,EEE為周幾
  [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
  [dateFormatter setDateFormat:@"yyyy年MMMMd日"];//MMMM 為xx月,一個d可以省去01日前的0

3.NSString轉NSDate少一天的解決辦法
 用下面這種格式化方式 
  1.[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

  2.
   NSCalendar *calendar = [NSCalendar currentCalendar];
   NSDateComponents *components = [calendar components:(NSDayCalendarUnit | NSMonthCalendarUnit |                                  NSYearCalendarUnit) fromDate:[NSDate date]];
   NSDate *todayDate = [calendar dateFromComponents:components];

iOS開發之格式化日期時間(轉)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.