Thousand Squared

希望能分享一些學習心得啊啊啊~~~.

時間格式 PrettyFormatter

| Comments

前陣子在剛好在處理時間格式,研究了Twitter與Facebook等各大網站的時間格式,發現每家都不太一樣各有特色呀。

因此決定實作做一個iOS上使用的Formatter,可以顯示 Twitter time format 或 Facebook time format。

NSCalender與 NSDateComponents

在Cocoa上有兩個很方便的Class:NSCalenderNSDateComponents,可以直接把時間轉換成幾天、幾年、幾個月、幾分鐘等等。 利用這兩個 Class 我們就可以做出最基本的幾分鐘前,幾秒鐘前啦。

宣告如下:

1
2
3
4
NSCalendar* calendar = [NSCalendar currentCalendar];
NSDateComponents* components = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit |
NSHourCalendarUnit |  NSMinuteCalendarUnit |  NSSecondCalendarUnit
fromDate:date toDate:[NSDate date] options:0];

其中可以指定 NSCalendar 的單位為何:如果只要年份就只填 NSYearCalendarUnit,如果需要多種就可以串起來啦。

使用時就可以直接找出 時間差 有多少啦,還可以指定到年月日分秒唷!

1
2
3
4
if (components.year > 0)
{...}
else if (components.second > 0)
{...}

NSFormatter

另外一個常用到的 NSDateFormatter 則可以用來指定要顯示的 “時間格式”。

新增一個 NSDateFormatter

1
2
    NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
    [formatter setDateFormat:@"d MMM"];

其中 setDateFormat 可以參考:
Unicode Date Format Patterns

舉個例子:

1
2
3
4
5
6
7
8
9
10
NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];

//7 Mar
[formatter setDateFormat:@"d MMM"];

//07 March
[formatter setDateFormat:@"dd MMMM"];

//March 7 at 12:30 PM
[formatter setDateFormat:@"MMMM d 'at' h:mm a"];

小結

我想有了這3個Class,任何時間格式就都不是問題啦!!!

View source on Github

Comments