日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS开发之时间格式的转化

發(fā)布時(shí)間:2024/6/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS开发之时间格式的转化 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

例如:如何將格式為“12-May-14 05.08.02.000000 PM”的時(shí)間轉(zhuǎn)化成“2014/05/12 5:08:02”,下面是具體實(shí)現(xiàn)代碼:

? ??NSString* timeStr = @"12-May-14 05.08.02.000000 PM";

? ? NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

? ? [formatter setDateStyle:NSDateFormatterMediumStyle];

? ? [formatter setTimeStyle:NSDateFormatterShortStyle];

? ? [formatter setDateFormat:@"dd-MMMM-yy hh.mm.ss.ssssss aa"];//設(shè)置源時(shí)間字符串的格式

? ? NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];//設(shè)置時(shí)區(qū)

? ? [formatter setTimeZone:timeZone];

? ? NSDate* date = [formatter dateFromString:timeStr];//將源時(shí)間字符串轉(zhuǎn)化為NSDate

? ? NSDateFormatter* toformatter = [[NSDateFormatter alloc] init];

? ? [toformatter setDateStyle:NSDateFormatterMediumStyle];

? ? [toformatter setTimeStyle:NSDateFormatterShortStyle];

? ? [toformatter setDateFormat:@"yyyy/MM/dd h:MM:ss"];//設(shè)置目標(biāo)時(shí)間字符串的格式

? ? NSString *targetTime = [toformatter stringFromDate:date];//將時(shí)間轉(zhuǎn)化成目標(biāo)時(shí)間字符串

? ? NSLog(@"targetTime === %@",targetTime);

?? ?

其實(shí)時(shí)間格式之間的相互轉(zhuǎn)化完全依賴于NSDateFormatter。

NSDateFormatter有下面2個(gè)方法:
??- (NSString *)stringFromDate:(NSDate *)date;//NSDate轉(zhuǎn)NSString
??- (NSDate *)dateFromString:(NSString *)string;//NSString轉(zhuǎn)NSDate
?

?


字符說明

(:)

時(shí)間分隔符。在某些區(qū)域設(shè)置中,可以使用其他字符表示時(shí)間分隔符。時(shí)間分隔符在格式化時(shí)間值時(shí)分隔小時(shí)、分鐘和秒。格式化輸出中用作時(shí)間分隔符的實(shí)際字符由您的應(yīng)用程序的當(dāng)前區(qū)域性值確定。

(/)

日期分隔符。在某些區(qū)域設(shè)置中,可以使用其他字符表示日期分隔符。日期分隔符在格式化日期值時(shí)分隔日、月和年。格式化輸出中用作日期分隔符的實(shí)際字符由您的應(yīng)用程序的當(dāng)前區(qū)域性確定。

(%)

用于表明不論尾隨什么字母,隨后字符都應(yīng)該以單字母格式讀取。也用于表明單字母格式應(yīng)以用戶定義格式讀取。有關(guān)更多詳細(xì)信息,請參見下面的內(nèi)容。

d

將日顯示為不帶前導(dǎo)零的數(shù)字(如 1)。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %d。

dd

將日顯示為帶前導(dǎo)零的數(shù)字(如 01)。

EEE

將日顯示為縮寫形式(例如 Sun)。

EEEE

將日顯示為全名(例如 Sunday)。

M

將月份顯示為不帶前導(dǎo)零的數(shù)字(如一月表示為 1)。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %M。

MM

將月份顯示為帶前導(dǎo)零的數(shù)字(例如 01/12/01)。

MMM

將月份顯示為縮寫形式(例如 Jan)。

MMMM

將月份顯示為完整月份名(例如 January)。

gg

顯示時(shí)代/紀(jì)元字符串(例如 A.D.)

h

使用 12 小時(shí)制將小時(shí)顯示為不帶前導(dǎo)零的數(shù)字(例如 1:15:15 PM)。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %h。

hh

使用 12 小時(shí)制將小時(shí)顯示為帶前導(dǎo)零的數(shù)字(例如 01:15:15 PM)。

H

使用 24 小時(shí)制將小時(shí)顯示為不帶前導(dǎo)零的數(shù)字(例如 1:15:15)。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %H。

HH

使用 24 小時(shí)制將小時(shí)顯示為帶前導(dǎo)零的數(shù)字(例如 01:15:15)。

m

將分鐘顯示為不帶前導(dǎo)零的數(shù)字(例如 12:1:15)。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %m。

mm

將分鐘顯示為帶前導(dǎo)零的數(shù)字(例如 12:01:15)。

s

將秒顯示為不帶前導(dǎo)零的數(shù)字(例如 12:15:5)。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %s。

ss

將秒顯示為帶前導(dǎo)零的數(shù)字(例如 12:15:05)。

f

顯示秒的小數(shù)部分。例如,ff 將精確顯示到百分之一秒,而 ffff 將精確顯示到萬分之一秒。用戶定義格式中最多可使用七個(gè) f 符號(hào)。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %f。

t

使用 12 小時(shí)制,并對中午之前的任一小時(shí)顯示大寫的 A,對中午到 11:59 P.M 之間的任一小時(shí)顯示大寫的 P。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %t。

tt

對于使用 12 小時(shí)制的區(qū)域設(shè)置,對中午之前任一小時(shí)顯示大寫的 AM,對中午到 11:59 P.M 之間的任一小時(shí)顯示大寫的 PM。

對于使用 24 小時(shí)制的區(qū)域設(shè)置,不顯示任何字符。

y

將年份 (0-9) 顯示為不帶前導(dǎo)零的數(shù)字。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %y。

yy

以帶前導(dǎo)零的兩位數(shù)字格式顯示年份(如果適用)。

yyy

以四位數(shù)字格式顯示年份。

yyyy

以四位數(shù)字格式顯示年份。

z

顯示不帶前導(dǎo)零的時(shí)區(qū)偏移量(如 -8)。如果這是用戶定義的數(shù)字格式中的唯一字符,請使用 %z。

zz

顯示帶前導(dǎo)零的時(shí)區(qū)偏移量(例如 -08)

zzz

顯示完整的時(shí)區(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?//?當(dāng)前時(shí)間創(chuàng)建NSDate

? ? ? ??NSDate?*myDate = [NSDate?date];

? ? ? ??NSLog(@"myDate = %@",myDate);

2?//從現(xiàn)在開始的24小時(shí)

? ? ? ??NSTimeInterval?secondsPerDay =?24*60*60;

? ? ? ??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);

?

? ? ? ??//兩個(gè)日期之間相隔多少秒

? ? ? ??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實(shí)現(xiàn)日期的輸出

? ? ? ??NSDateFormatter?*formatter = [[NSDateFormatteralloc]init];

? ? ? ? [formatter?setDateStyle:NSDateFormatterFullStyle];//直接輸出的話是機(jī)器碼

? ? ? ??//或者是手動(dòng)設(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)用法

?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月,一個(gè)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];

?

轉(zhuǎn)載于:https://www.cnblogs.com/daguo/p/4097400.html

總結(jié)

以上是生活随笔為你收集整理的iOS开发之时间格式的转化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。