NSDate和NSString轉換
在我們專案中經常會接觸到時間等的轉換,將日期轉化成時間字串顯示,將時間字串轉化成日期等。
轉換方法
系統有提供NSString和NSDate之間的轉化方法。
//NSDate -> NSString
- (NSString *)stringFromDate:(NSDate *)date {
//用於格式化NSDate物件
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
//設定顯示格式
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//NSDate轉NSString
NSString *dateString = [formatter stringFromDate:date];
return dateString;
}
//NSString -> NSDate
- (NSDate *)dateFromString:(NSString *)dateString {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSDate *date = [formatter dateFromString:dateString];
return date;
}
這裡我們將兩個轉換各寫了一個方法,在專案裡我們可以封裝一個工具類,或者直接給NSDate寫分類來實現這兩個方法,以提供整個專案使用。
注意事項
0xx1
當我們用NSDate *currentDate = [NSDate date]時,獲取到的currentDate物件:
但是實際上我是在2017-11-03 19:44:58。也就是說用這個方法獲取到的currentDate物件是美國時間的NSDate物件。
但是轉換成NSString列印時:
就是當地時間格式了。
0xx2
當我們將一個字串轉化成NSDate物件時,這個NSDate物件的日期將是美國當前日期時間
因為在與後臺傳輸過程中一般都是傳時間字串,所以當NSDate物件轉化成NSString後,時間就是當地時間,不會出現什麼時間上的誤差。
0xx3
如果想要解決上面的問題,就設定一下時區
//NSString -> NSDate
- (NSDate *)dateFromString:(NSString *)dateString {
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[formatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]];
NSDate *date = [formatter dateFromString:dateString];
return date;
}
比較一下兩者的區別
未設定:
設定了:
總結
當地時間是2017-11-03 20:08:16。設定後獲取到的是當地時間的NSDate物件,沒設定的話是美國時間NSDate物件。
不過如果都轉化成字串進行處理的話就不會有什麼問題。
相關文章
- NSString, NSData和Byte的相互轉換
- iOS圖文混排與NSString轉換iOS
- object-c中NSString與int和float的相互轉換Object
- object c基礎, 基本型別(NSString,char*NSDate,NSData),集合NSArray,NSMutableArray,NSDictionary,NSMutableDiction...Object型別
- iOS引用轉換:Foundation與Core Foundation物件互相轉換(__CFString轉NSString,void *轉id等等)iOS物件
- 轉 IOS---NSdata 與 NSString,Byte陣列,UIImage 的相互轉換iOS陣列UI
- NSDate使用筆記筆記
- js顯式轉換和隱式轉換JS
- OC基礎學習-NSString、NSArray和NSDictionary
- Drawable和Bitmap轉換
- iOS-NSStringiOS
- RVA和RAW相互轉換
- List和ObservableCollection的轉換
- iOS時間那點事--NSDateiOS
- Activity轉換為View和把圖片轉換為ViewView
- ios 時間 string 和 nsdate問題 swift2 2 ociOSSwift
- NSString 遇到的坑
- NSString使用stringWithFormatORM
- Oracle和JDE日曆轉換Oracle
- js 字母和ASCII的轉換JSASCII
- javascript字串和陣列轉換JavaScript字串陣列
- oracle和mysql的行列轉換OracleMySql
- Flex ASM的配置和轉換FlexASM
- List 和 陣列 的轉換陣列
- Java資料型別的顯式轉換和隱式轉換Java資料型別
- C++中的向上型別轉換和向下型別轉換C++型別
- iOS擷取NSString字串iOS字串
- Android 多國語言轉換 Excel 和 Excel 轉換為 stringAndroidExcel
- MSSQL-從字串轉換日期和/或時間時,轉換失敗SQL字串
- 5 切換和故障轉移操作
- Java String和Date的轉換Java
- 角度和弧度之間的轉換
- 型別轉換(int 和 String)型別
- 陣列和集合的相互轉換陣列
- clob和字串之間的轉換字串
- javascript數字和字串相互轉換JavaScript字串
- 字串和陣列的相互轉換字串陣列
- JavaScript全形和半形相互轉換JavaScript