nsdate是ns類庫中基礎型別之一。隨著數位化發展,程式對資料處理量越來越大,我們經常從伺服器取得的日期是字串序列,格式化為正確的date型別是乙個不可避免的工作。在cocoa程式裡提供了非常方便的函式和類,但是仍然需要我們了解一些技巧。尤其是當我們的程式面對大量的日期字串轉換的時候,要格外的注意。蘋果文件中使用nsdateformatter類格式化日期字串,但是以防讀者不知道,我這裡提一下:它的速度非常慢!!這篇文章介紹如何處理這種情況。
1234567
89
-
(nsdate*)
datefromstring:
(nsstring*)
string
由於nsdateformatter內部**原因,所以格式化字串代價很大。對於個別地方使用它做日期轉換是非常方便的,但是如果是放在乙個大的迴圈內部,直接使用nsdateformatter絕對不是明智的選擇。它很有可能成為拖慢你程式速度的元凶。
其實如果你知道你的程式將會取得什麼格式的日期字串,那麼直接分解字串後利用nscalendar和nsdatecomponents可以提高速度很多。
1234567
891011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
4041
4243
4445
4647
4849
50
-
(nsdate*)
mydatefromstring:
(nsstring*)
string
;@try
@catch
(n***ception
*exception
)@finally
return
[gregorian
datefromcomponents:
comps];}
如果要更快,就需要拋棄objc,編寫c**格式化時間字串。如下**經過測試是最快的。
1234567
891011
-
(nsdate*)
datefromstring:
(nsstring*)
string
下面是我簡單測試迴圈10000次解析日期字串的時間比較。
123
2012-05
-0515:
57:51.942
timetest
[18488
:707
]1.991521
//第一種
2012-05
-0515:
57:52.096
timetest
[18488
:707
]0.921144
//第二種
2012-05
-0515:
57:54.088
timetest
[18488
:707
]0.153897
//第三種
objective c中的NSString操作
1 建立常量字串。nsstring astring this is a string 2 建立空字串,給予賦值。nsstring astring nsstring alloc init astring this is a string nslog astring astring astring re...
OC中NSString的操作
1.比較字元 bool result astring01 isequaltostring astring02 1 搜尋字元 nsrange range source rangeofstring 返回值為nsrange,其有兩個引數 location length 若子字串中包含搜尋字元,則返回返回r...
NSString中的數字問題
在寫學生管理系統的時候,需要判斷student類中 學生姓名中是否有數字,學號 年齡 成績是否全為數字,而在定義時把它們都設為了nsstring,所以需要從nsstring中提取出,或判斷出數字。用於判斷學生姓名 用來判斷姓名和班級 是否含有數字 nscharacterset characterse...