iOS中NSDate和NSString相互轉換
阿新 • • 發佈:2019-01-08
本文來源地址:http://www.osjoin.com
今天給大家分享一些關於NSDate和NSString相互轉換。
日期轉成字串。這個雖然簡單,但是我相信很多朋友初次遇到肯定束手無策。腦子裡蹦出四個字:這怎麼轉?直接上程式碼:
//獲取系統當前時間 NSDate *currentDate = [NSDate date]; //用於格式化NSDate物件 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; //設定格式:zzz表示時區 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"]; //NSDate轉NSString NSString *currentDateString = [dateFormatter stringFromDate:currentDate]; //輸出currentDateString<span style="font-family: 'Helvetica Neue', Helvetica, 'Hiragino Sans GB', 'Microsoft YaHei', Arial, sans-serif; line-height: 25.6000003814697px; white-space: pre-wrap;">NSLog(@"%@",currentDateString);</span>
NSDate物件包含兩個部分,日期(Date)和時間(Time)。格式化的時間字串主要也是針對日期和時間的。NSDateFormatter是一個很常用的類,用於格式化NSDate物件,支援本地化的資訊。
常用的轉換格式為:
yyyy-MM-dd HH:mm:ss.SSS
yyyy-MM-dd HH:mm:ss
yyyy-MM-ddMM dd yyyy
NSDateFormatter的轉換格式:
G: 公元時代,例如AD公元 yy: 年的後2位 yyyy: 完整年 MM: 月,顯示為1-12 MMM: 月,顯示為英文月份簡寫,如 Jan MMMM: 月,顯示為英文月份全稱,如 Janualy dd: 日,2位數表示,如02 d: 日,1-2位顯示,如 2 EEE: 簡寫星期幾,如Sun EEEE: 全寫星期幾,如Sunday aa: 上下午,AM/PM H: 時,24小時制,0-23 K:時,12小時制,0-11 m: 分,1-2位 mm: 分,2位 s: 秒,1-2位 ss: 秒,2位 S: 毫秒
既然NSDate可以轉成NSString,毫無疑問NSString也可以轉成NSDate。程式碼如下:
/** * 利用nsdateformatter 轉換時間 把當前時間轉換為字串 */ NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:sss"]; //獲取當前時間 NSDate *dateNow = [NSDate date]; NSLog(@"%@",[formatter stringFromDate:dateNow]);
/**
* 把字串時間轉換為nsdate
*/
NSDateFormatter *formatter1 = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy-MM-dd HH-mm-sss"];
NSDate *resDate = [formatter dateFromString:@"2014-10-1 12-00-00"];
NSLog(@"%@",resDate);
轉換結論:
把一個nsdate型別轉換成string型別的時間格式的時候,會在零時區的基礎上加8個小時
把一個string型別時間格式轉換成nsdate格式的時候,會把時間迴歸到零時區記時
在轉換過程中,系統會自動幫你計算。人為的好像還不能限制。
在轉換時間的時候一定要把佔位符 寫好
以及各個時間長度的佔位符。不然就會得到的就是null。
轉換工具類
在專案中,我們需要用到轉換的地方可能不止一處,所以建議我們定義一個工具類。在工具類裡實現如下兩個方法:
//NSDate轉NSString
+ (NSString *)stringFromDate:(NSDate *)date
{
//獲取系統當前時間
NSDate *currentDate = [NSDate date];
//用於格式化NSDate物件
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//設定格式:zzz表示時區
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"];
//NSDate轉NSString
NSString *currentDateString = [dateFormatter stringFromDate:currentDate];
//輸出currentDateString
NSLog(@"%@",currentDateString);
return currentDateString;
}
//NSString轉NSDate
+ (NSDate *)dateFromString:(NSString *)string
{
//需要轉換的字串
NSString *dateString = @"2015-06-26 08:08:08";
//設定轉換格式
NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//NSString轉NSDate
NSDate *date=[formatter dateFromString:dateString];
return date;
}
- 如有問題可新增QQ群:234812704(洲洲哥之說)
- 登入www.osjoin.com 第一時間檢視最新文章
- 歡迎各位一塊學習,提高逼格!
-
也可以新增洲洲哥的微信公眾號
更多訊息
更多信iOS開發資訊 請以關注洲洲哥 的微信公眾號,不定期有乾貨推送: