1. 程式人生 > >iOS中NSDate和NSString相互轉換

iOS中NSDate和NSString相互轉換

本文來源地址: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開發資訊 請以關注洲洲哥 的微信公眾號,不定期有乾貨推送:

    這裡寫圖片描述