NSDateFormatter

屬性

typedef NS_ENUM(NSInteger,NSFormattingContext){
    NSFormattingContextUnknown = 0颠猴,
    //根據(jù)集合{NSFormattingContextStandalone敷待,NSFormattingContextBeginningOfSentence淀散,NSFormattingContextMiddleOfSentence}動態(tài)確定大小寫上下文。
    // 例如,如果將日期放在句子的開頭,則使用NSFormattingContextBeginningOfSentence自動格式化字符串。
    //使用此上下文時盛泡,格式化程序?qū)⒎祷匾粋€string proxy,在大多數(shù)情況下娱颊,string proxy 的工作方式與普通字符串相同傲诵。
    // 從格式化程序返回后,使用NSFormattingContextUnknown格式化字符串代理中的字符串箱硕。
    //在stringWithFormat:中使用字符串代理時拴竹,我們可以確定%@的位置,然后相應(yīng)地設(shè)置上下文颅痊。
    //在新的上下文中殖熟,字符串代理中的字符串將再次格式化,并放入從stringWithFormat:返回的最終字符串中斑响。
    NSFormattingContextDynamic = 1菱属,
    //大寫上下文,如果要使用適合于獨(dú)立使用的大寫字母來格式化日期或日期符號舰罚,例如日歷頁面上的獨(dú)立名稱纽门。
    NSFormattingContextStandalone = 2
    //如果要使用與列表或菜單項相對應(yīng)的大寫字母來格式化日期或日期符號,請使用大寫字母营罢。
    NSFormattingContextListItem = 3赏陵,
    //如果日期或日期符號要以適合句子開頭的大寫格式設(shè)置,則大寫上下文饲漾。
    NSFormattingContextBeginningOfSentence = 4
    //如果日期或日期符號要以適合句子中間的大寫格式設(shè)置蝙搔,則大寫上下文。
    NSFormattingContextMiddleOfSentence = 5 
}
/*
根據(jù)字符串的應(yīng)用場景和當(dāng)前語言環(huán)境考传,來決定如何應(yīng)用大小寫
例如吃型,當(dāng)格式化法語語言環(huán)境的日期或日期符號時,
如果出現(xiàn)在句子的開頭 將月份名稱大寫(“ Juin est mon mois de naissance”)僚楞,
否則(“ Mon mois de naissance est juin”)勤晚。
*/
@property NSFormattingContext formattingContext

typedef NS_ENUM(NSUInteger, NSDateFormatterStyle) {    // date and time format styles
    NSDateFormatterNoStyle = kCFDateFormatterNoStyle,
// 指定一種短樣式枉层,通常僅是數(shù)字,例如“ 11/23/37”或“ 3:30 PM”赐写。
    NSDateFormatterShortStyle = kCFDateFormatterShortStyle,
// 指定一種中等樣式鸟蜡,通常帶有縮寫文本,例如“Nov 23, 1937” or “3:30:32 PM”.
    NSDateFormatterMediumStyle = kCFDateFormatterMediumStyle,
// 指定一個長樣式挺邀,通常帶有全文揉忘,例如“November 23, 1937” or “3:30:32 PM PST”.
    NSDateFormatterLongStyle = kCFDateFormatterLongStyle,
// 指定具有完整詳細(xì)信息的完整樣式,例如"Tuesday, April 12, 1952 AD” or “3:30:42 PM Pacific Standard Time”.
    NSDateFormatterFullStyle = kCFDateFormatterFullStyle
};

typedef NS_ENUM(NSUInteger, NSDateFormatterBehavior) {
    NSDateFormatterBehaviorDefault = 0,
#if TARGET_OS_OSX
    NSDateFormatterBehavior10_0 = 1000,
#endif
    NSDateFormatterBehavior10_4 = 1040,
};
// 日期格式字符串
@property (null_resettable, copy) NSString *dateFormat;
// 日期樣式和時間樣式,會反饋到dateFormat上
@property NSDateFormatterStyle dateStyle;
@property NSDateFormatterStyle timeStyle;
// 地區(qū)
@property (null_resettable, copy) NSLocale *locale;
// 是否生成不建議使用的日歷日期類型悠夯。暫時不知道什么用
@property BOOL generatesCalendarDates;
// 時區(qū)
@property (null_resettable, copy) NSTimeZone *timeZone;
// 日歷對象癌淮,暫時不知道什么用
@property (null_resettable, copy) NSCalendar *calendar;
// 允許如果時間不存在的話躺坟,可以獲取距離最近的整點(diǎn)時間沦补。比如說夏令時
@property (getter=isLenient) BOOL lenient;
/*
可以用兩位數(shù)字的年份指定符表示的最早日期。即當(dāng)傳進(jìn)來的字符串年是兩位數(shù)的時候咪橙,轉(zhuǎn)成NSDate夕膀,不會比這個日期小
如果被設(shè)置為 January 6, 1976, 那么 “January 1, 76” 被解釋為 New Year's Day in 2076, 而 “February 14, 76” 被解釋為 Valentine's Day in 1976.
默認(rèn)值是 December 31, 1949.
*/
@property (nullable, copy) NSDate *twoDigitStartDate;
//默認(rèn)日期,默認(rèn)值是nil
@property (nullable, copy) NSDate *defaultDate;
// 時代符號
// A.D.是“Anno Domini”[拉丁語]的縮寫,“公元”的意思美侦,現(xiàn)可用來表示公元后产舞。
// B.C.是 “before christ”〔英語〕的縮寫,意思是“主前,公元前”.
@property (null_resettable, copy) NSArray<NSString *> *eraSymbols;
// 月份符號    January,    February,    March,    April,    May,    June,    July,    August,    September,    October,    November,    December
@property (null_resettable, copy) NSArray<NSString *> *monthSymbols;
// 簡單的月份符號    Jan,    Feb,    Mar,    Apr,    May,    Jun,    Jul,    Aug,    Sep,    Oct,    Nov,    Dec
@property (null_resettable, copy) NSArray<NSString *> *shortMonthSymbols;
//  周符號 Sunday,    Monday,    Tuesday,    Wednesday,    Thursday,    Friday,    Saturday
@property (null_resettable, copy) NSArray<NSString *> *weekdaySymbols;
// 簡單的周符號   Sun,    Mon,    Tue,    Wed,    Thu,    Fri,    Sat
@property (null_resettable, copy) NSArray<NSString *> *shortWeekdaySymbols;

//am符號
@property (null_resettable, copy) NSString *AMSymbol;
// pm符號
@property (null_resettable, copy) NSString *PMSymbol;
// 長的紀(jì)元符號    "Before Christ"   "Anno Domini"
@property (null_resettable, copy) NSArray<NSString *> *longEraSymbols
// 非常短的月份符號 J,    F,    M,    A,    M,    J,    J,    A,    S,    O,    N,    D
@property (null_resettable, copy) NSArray<NSString *> *veryShortMonthSymbols
// 獨(dú)立月份符號 January,    February,    March,    April,    May,    June,    July,    August,    September,    October,    November,    December
@property (null_resettable, copy) NSArray<NSString *> *standaloneMonthSymbols
// 接收器的短的獨(dú)立月份符號。  Jan,    Feb,    Mar,    Apr,    May,    Jun,    Jul,    Aug,    Sep,    Oct,    Nov,    Dec
@property (null_resettable, copy) NSArray<NSString *> *shortStandaloneMonthSymbols
// J,    F,    M,    A,    M,    J,    J,    A,    S,    O,    N,    D
@property (null_resettable, copy) NSArray<NSString *> *veryShortStandaloneMonthSymbols
// 非常短的周符號   S,    M,    T,    W,    T,    F,    S
@property (null_resettable, copy) NSArray<NSString *> *veryShortWeekdaySymbols
//  周符號 Sunday,    Monday,    Tuesday,    Wednesday,    Thursday,    Friday,    Saturday
@property (null_resettable, copy) NSArray<NSString *> *standaloneWeekdaySymbols 
// 簡單的周符號   Sun,    Mon,    Tue,    Wed,    Thu,    Fri,    Sat
@property (null_resettable, copy) NSArray<NSString *> *shortStandaloneWeekdaySymbols
// S,    M,    T,    W,    T,    F,    S
@property (null_resettable, copy) NSArray<NSString *> *veryShortStandaloneWeekdaySymbols 
// 四分之一符號 "1st quarter",    "2nd quarter",    "3rd quarter",    "4th quarter"
@property (null_resettable, copy) NSArray<NSString *> *quarterSymbols 
//   Q1,    Q2,    Q3,    Q4
@property (null_resettable, copy) NSArray<NSString *> *shortQuarterSymbols 
// 四分之一符號 "1st quarter",    "2nd quarter",    "3rd quarter",    "4th quarter"
@property (null_resettable, copy) NSArray<NSString *> *standaloneQuarterSymbols 
//   Q1,    Q2,    Q3,    Q4
@property (null_resettable, copy) NSArray<NSString *> *shortStandaloneQuarterSymbols
//公歷日歷的開始日期菠剩。 1582-10-15T08:05:43+08:05:43
@property (nullable, copy) NSDate *gregorianStartDate
//一個布爾值易猫,指示接收者是否將諸如“ today”和“明天”之類的短語用作日期部分。
@property BOOL doesRelativeDateFormatting

方法

/*
判斷字符串能否被當(dāng)前的dateFormatter解析
obj
如果能夠解析字符串具壮,返回NSDate對象
string
要解析的字符串准颓。
rangep
傳進(jìn)去要解析的范圍,如果能解析字符串棺妓,則返回時解析的字符串范圍攘已。
*/
- (BOOL)getObjectValue:(out id _Nullable * _Nullable)obj forString:(NSString *)string range:(inout nullable NSRange *)rangep error:(out NSError **)error;
// 字符串和NSDate相互轉(zhuǎn)換的方法
- (NSString *)stringFromDate:(NSDate *)date;
- (nullable NSDate *)dateFromString:(NSString *)string;
// 快速格式化字符串
+ (NSString *)localizedStringFromDate:(NSDate *)date dateStyle:(NSDateFormatterStyle)dstyle timeStyle:(NSDateFormatterStyle)tstyle

// 根據(jù)模板返回dateFormat
/*
不同的語言環(huán)境對日期組件的排序有不同的約定。使用此方法為指定語言環(huán)境的一組給定組件獲取適當(dāng)?shù)母袷阶址?示例:英式英語和美式英語的日期格式差異:
NSLocale * usLocale = [[NSLocale alloc] initWithLocaleIdentifier:@“ en_US”];
NSLocale * gbLocale = [[NSLocale alloc] initWithLocaleIdentifier:@“ en_GB”];
NSString * template = @“ yMMMMd”;
NSString * enDateFormat = [NSDateFormatter dateFormatFromTemplate:template options:0 locale:usLocale];
NSLog(@“日期格式為%@:%@”怜跑,
    [usLocale displayNameForKey:NSLocaleIdentifier value:[usLocale localeIdentifier]]样勃,enDateFormat);
NSString * gbDateFormat = [NSDateFormatter dateFormatFromTemplate:template options:0 locale:gbLocale];
NSLog(@“日期格式為%@:%@”,
    [gbLocale displayNameForKey:NSLocaleIdentifier值:[gbLocale localeIdentifier]]性芬,gbDateFormat)峡眶;
// 輸出:
//英文(美國)的日期格式:MMMM d,y
//英文(英國)的日期格式:d MMMM y
參數(shù)
*/
+ (nullable NSString *)dateFormatFromTemplate:(NSString *)tmplate options:(NSUInteger)opts locale:(nullable NSLocale *)locale

/*
等效于植锉,但不一定實(shí)現(xiàn)為:
formatter.dateFormat = [NSDateFormatter dateFormatFromTemplate:dateFormatTemplate選項:0區(qū)域設(shè)置:formatter.locale]辫樱;
*/
- (void) setLocalizedDateFormatFromTemplate:(NSString *)dateFormatTemplate
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市汽煮,隨后出現(xiàn)的幾起案子搏熄,更是在濱河造成了極大的恐慌棚唆,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件心例,死亡現(xiàn)場離奇詭異宵凌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)止后,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門瞎惫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人译株,你說我怎么就攤上這事瓜喇。” “怎么了歉糜?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵乘寒,是天一觀的道長。 經(jīng)常有香客問我匪补,道長伞辛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任夯缺,我火速辦了婚禮蚤氏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘踊兜。我一直安慰自己竿滨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布捏境。 她就那樣靜靜地躺著于游,像睡著了一般。 火紅的嫁衣襯著肌膚如雪典蝌。 梳的紋絲不亂的頭發(fā)上曙砂,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機(jī)與錄音骏掀,去河邊找鬼鸠澈。 笑死,一個胖子當(dāng)著我的面吹牛截驮,可吹牛的內(nèi)容都是我干的笑陈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼葵袭,長吁一口氣:“原來是場噩夢啊……” “哼涵妥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起坡锡,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蓬网,失蹤者是張志新(化名)和其女友劉穎窒所,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帆锋,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吵取,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了锯厢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片皮官。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖实辑,靈堂內(nèi)的尸體忽然破棺而出捺氢,到底是詐尸還是另有隱情,我是刑警寧澤剪撬,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布摄乒,位于F島的核電站,受9級特大地震影響婿奔,放射性物質(zhì)發(fā)生泄漏缺狠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一萍摊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧如叼,春花似錦冰木、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至社证,卻和暖如春逼龟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背追葡。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工腺律, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宜肉。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓匀钧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谬返。 傳聞我的和親對象是個殘疾皇子之斯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

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