NSDateFormatter 字符串 時間格式之間互轉(zhuǎn)

//將時間轉(zhuǎn)字符串
- (NSString *)nowStrin{
NSDateFormatter *formatter = [[NSDateFormatteralloc]init];
[formatter setDateFormat:@"M-d hh-mm-ss"];
return [formatterstringFromDate:[NSDatedate]];
}

-(NSString *)transTimeStr{
 //將字符串轉(zhuǎn)為日期
   NSDateFormatter *dateFormat1 = [[NSDateFormatteralloc]init]; 
   [dateFormat1 setTimeZone:[NSTimeZonetimeZoneWithAbbreviation:@"zyc"]];    
 //先設(shè)置給定的字符串是什么格式的例如yyyyMMddHHmmss  
   [dateFormat1 setLocale:[NSLocalecurrentLocale]];  
   [dateFormat1 setDateFormat:@"yyyyMMddHHmmss"];    
   [dateFormat1 setFormatterBehavior:NSDateFormatterBehaviorDefault];      
    NSDate *date1 = [dateFormat1dateFromString:@"20000101111111"];    
  //將日期轉(zhuǎn)為指定格式    
    NSDateFormatter *dateFormat2 = [[NSDateFormatteralloc]init];    
    [dateFormat2 setTimeZone:[NSTimeZonetimeZoneWithAbbreviation:@"zyc"]]; 
    [dateFormat2 setLocale:[NSLocalecurrentLocale]]; 
  //將NSDate格式時間轉(zhuǎn)成什么格式的字符串例如轉(zhuǎn)成M-d    
    [dateFormat2 setDateFormat:@"yyyy-MM-dd HH/mm/ss"]; 
    [dateFormat2 setFormatterBehavior:NSDateFormatterBehaviorDefault];      
     NSString *timeStr = [dateFormat2stringFromDate:date1];   
  return  timeStr;    
 }

在開發(fā)iOS程序時,有時候需要將時間格式調(diào)整成自己希望的格式办素,這個時候我們可以用NSDateFormatter類來處理锌蓄。例如:

//實例化一個NSDateFormatter對象
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//設(shè)定時間格式,這里可以設(shè)置成自己需要的格式
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
//用[NSDate date]可以獲取系統(tǒng)當前時間
NSString *currentDateStr = [dateFormatter stringFromDate:[NSDate date]];
//輸出格式為:2010-10-27 10:22:13
NSLog(@"%@",currentDateStr);
//alloc后對不使用的對象別忘了(ARC下忽略)
release[dateFormatter release];

字符說明(:)
時間分隔符。在某些區(qū)域設(shè)置中轻猖,可以使用其他字符表示時間分隔符。時間分隔符在格式化時間值時分隔小時域那、分鐘和秒咙边。格式化輸出中用作時間分隔符的實際字符由您的應(yīng)用程序的當前區(qū)域性值確定猜煮。
(/)
日期分隔符。在某些區(qū)域設(shè)置中败许,可以使用其他字符表示日期分隔符王带。日期分隔符在格式化日期值時分隔日、月和年市殷。格式化輸出中用作日期分隔符的實際字符由您的應(yīng)用程序的當前區(qū)域性確定愕撰。
(%)
用于表明不論尾隨什么字母,隨后字符都應(yīng)該以單字母格式讀取醋寝。也用于表明單字母格式應(yīng)以用戶定義格式讀取搞挣。有關(guān)更多詳細信息,請參見下面的內(nèi)容音羞。
d
將日顯示為不帶前導零的數(shù)字(如 1)囱桨。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %d嗅绰。
dd
將日顯示為帶前導零的數(shù)字(如 01)舍肠。
EEE
將日顯示為縮寫形式(例如 Sun)。
EEEE
將日顯示為全名(例如 Sunday)窘面。
M
將月份顯示為不帶前導零的數(shù)字(如一月表示為 1)翠语。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %M财边。
MM
將月份顯示為帶前導零的數(shù)字(例如 01/12/01)肌括。
MMM
將月份顯示為縮寫形式(例如 Jan)。
MMMM
將月份顯示為完整月份名(例如 January)制圈。
gg
顯示時代/紀元字符串(例如 A.D.)
h
使用 12 小時制將小時顯示為不帶前導零的數(shù)字(例如 1:15:15 PM)们童。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %h鲸鹦。
hh
使用 12 小時制將小時顯示為帶前導零的數(shù)字(例如 01:15:15 PM)慧库。
H
使用 24 小時制將小時顯示為不帶前導零的數(shù)字(例如 1:15:15)。如果這是用戶定義的數(shù)字格式中的唯一字符馋嗜,請使用 %H齐板。
HH
使用 24 小時制將小時顯示為帶前導零的數(shù)字(例如 01:15:15)。
m
將分鐘顯示為不帶前導零的數(shù)字(例如 12:1:15)葛菇。如果這是用戶定義的數(shù)字格式中的唯一字符甘磨,請使用 %m。
mm
將分鐘顯示為帶前導零的數(shù)字(例如 12:01:15)眯停。
s
將秒顯示為不帶前導零的數(shù)字(例如 12:15:5)济舆。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %s莺债。
ss
將秒顯示為帶前導零的數(shù)字(例如 12:15:05)滋觉。
f
顯示秒的小數(shù)部分签夭。例如,ff 將精確顯示到百分之一秒椎侠,而 ffff 將精確顯示到萬分之一秒第租。用戶定義格式中最多可使用七個 f 符號。如果這是用戶定義的數(shù)字格式中的唯一字符我纪,請使用 %f慎宾。
t
使用 12 小時制,并對中午之前的任一小時顯示大寫的 A浅悉,對中午到 11:59 P.M 之間的任一小時顯示大寫的 P趟据。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %t术健。
tt
對于使用 12 小時制的區(qū)域設(shè)置之宿,對中午之前任一小時顯示大寫的 AM,對中午到 11:59 P.M 之間的任一小時顯示大寫的 PM苛坚。
對于使用 24 小時制的區(qū)域設(shè)置,不顯示任何字符色难。
y
將年份 (0-9) 顯示為不帶前導零的數(shù)字泼舱。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %y枷莉。
yy
以帶前導零的兩位數(shù)字格式顯示年份(如果適用)娇昙。
yyy
以四位數(shù)字格式顯示年份。
yyyy
以四位數(shù)字格式顯示年份笤妙。
z
顯示不帶前導零的時區(qū)偏移量(如 -8)冒掌。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %z蹲盘。
zz
顯示帶前導零的時區(qū)偏移量(例如 -08)
zzz
顯示完整的時區(qū)偏移量(例如 -08:00)

格式顯示M/d/yy
12/7/58
d-MMM
7-Dec
d-MMMM-yy
7-December-58
d MMMM
7 December
MMMM yy
December 58
hh:mm tt
08:50 PM
h:mm:ss t
8:50:35 P
H:mm
20:50
H:mm:ss
20:50:35
M/d/yyyy H:mm
12/7/1958 20:50

IOS NSDate日期操作總結(jié)
1 // 當前時間創(chuàng)建NSDate
NSDate myDate = [NSDate date];
NSLog(@"myDate = %@",myDate);
2 //從現(xiàn)在開始的24小時
NSTimeInterval secondsPerDay = 24
6060;
NSDate tomorrow = [NSDate dateWithTimeIntervalSinceNow:secondsPerDay];
NSLog(@"myDate = %@",tomorrow);
3//根據(jù)已有日期創(chuàng)建日期
NSTimeInterval secondsPerDay1 = 24
60
60;
NSDate *now = [NSDate date];
NSDate *yesterDay = [now addTimeInterval:-secondsPerDay1];
NSLog(@"yesterDay = %@",yesterDay);

4//比較日期
BOOL sameDate = [now isEqualToDate:yesterDay];
NSLog(@"sameDate = %lu",sameDate);
4.1//獲取較早的日期
NSDate *earlierDate = [yesterDay earlierDate:now];
NSLog(@"earlierDate = %@",earlierDate);
4.2//較晚的日期
NSDate *laterDate = [yesterDay laterDate:now];
NSLog(@"laterDate = %@",laterDate);

    //兩個日期之間相隔多少秒
    NSTimeInterval secondsBetweenDates= [yesterDay timeIntervalSinceDate:now];
    NSLog(@"secondsBetweenDates=  %lf",secondsBetweenDates);
    //通過NSCALENDAR類來創(chuàng)建日期
    NSDateComponents *comp = [[NSDateComponentsalloc]init];
    [comp setMonth:06];
    [comp setDay:01];
    [comp setYear:2001];
    NSCalendar *myCal = [[NSCalendaralloc]initWithCalendarIdentifier:NSGregorianCalendar];
    NSDate *myDate1 = [myCal dateFromComponents:comp];
    NSLog(@"myDate1 = %@",myDate1);

    //從已有日期獲取日期
    unsigned units  = NSMonthCalendarUnit|NSDayCalendarUnit|NSYearCalendarUnit;
    NSDateComponents *comp1 = [myCal components:units fromDate:now];
    NSInteger month = [comp1 month];
    NSInteger year = [comp1 year];
    NSInteger day = [comp1 day];
    //NSDateFormatter實現(xiàn)日期的輸出
    NSDateFormatter *formatter = [[NSDateFormatteralloc]init];
    [formatter setDateStyle:NSDateFormatterFullStyle];//直接輸出的話是機器碼
    //或者是手動設(shè)置樣式[formatter setDateFormat:@"yyyy-mm-dd"];
    NSString *string = [formatter stringFromDate:now];
    NSLog(@"string = %@",string);
    NSLog(@"formater = %@",formatter);

//獲取日期格式對象

- (NSDateFormatter *)dateFormatter {
     if (dateFormatter == nil) {
           dateFormatter = [[NSDateFormatter alloc] init];
           [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
           [dateFormatter setTimeStyle:NSDateFormatterNoStyle];
     }
   return dateFormatter;
}

NSDate與NSDateFormatter的相關(guān)用法
1.NSDateFormatter配合NSDate與NSString之間的轉(zhuǎn)化 NSDateFormatter有下面2個方法:
- (NSString *)stringFromDate:(NSDate *)date; //NSDate轉(zhuǎn)NSString
- (NSDate *)dateFromString:(NSString *)string; //NSString轉(zhuǎn)NSDate
e.g

NSString *dateString=@"1900-01-01";
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc]init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd"]; 
NSDate *date=[dateFormatter dateFromString:dateString];
[dateFormatter release]; 

NSString轉(zhuǎn)NSDate與上面類似

NSString *dateString=[dateFormatter dateFromString:[NSDate date]];

2.NSDateFormatter 的一些格式介紹

 [dateFormatter setDateFormat:@"yyyy年MM月dd日#EEEE"];EEEE為星期幾股毫,EEE為周幾 
 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
 [dateFormatter setDateFormat:@"yyyy年MMMMd日"];//MMMM 為xx月,一個d可以省去01日前的0

3.NSString轉(zhuǎn)NSDate少一天的解決辦法 用下面這種格式化方式

1.     [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];  
2.      NSCalendar *calendar = [NSCalendar currentCalendar];  
        NSDateComponents *components = [calendar components:(NSDayCalendarUnit | 
    NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:[NSDate date]];  
        NSDate *todayDate = [calendar dateFromComponents:components];    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末召衔,一起剝皮案震驚了整個濱河市铃诬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌苍凛,老刑警劉巖趣席,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異醇蝴,居然都是意外死亡宣肚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門悠栓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霉涨,“玉大人按价,你說我怎么就攤上這事∏陡伲” “怎么了俘枫?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長逮走。 經(jīng)常有香客問我鸠蚪,道長,這世上最難降的妖魔是什么师溅? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任茅信,我火速辦了婚禮,結(jié)果婚禮上墓臭,老公的妹妹穿的比我還像新娘蘸鲸。我一直安慰自己,他們只是感情好窿锉,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布酌摇。 她就那樣靜靜地躺著,像睡著了一般嗡载。 火紅的嫁衣襯著肌膚如雪窑多。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天洼滚,我揣著相機與錄音埂息,去河邊找鬼。 笑死遥巴,一個胖子當著我的面吹牛千康,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播铲掐,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼拾弃,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了迹炼?” 一聲冷哼從身側(cè)響起砸彬,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎斯入,沒想到半個月后砂碉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡刻两,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年增蹭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片磅摹。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡滋迈,死狀恐怖霎奢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情饼灿,我是刑警寧澤幕侠,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站碍彭,受9級特大地震影響晤硕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜庇忌,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一舞箍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧皆疹,春花似錦疏橄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至表牢,卻和暖如春立砸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背初茶。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留浊闪,地道東北人恼布。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像搁宾,于是被迫代替她去往敵國和親折汞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容