iOS NSDate(一)

来源:互联网 发布:逆战一键瞬狙最快数据 编辑:程序博客网 时间:2024/06/07 05:15
NSDate对象包含两个部分,日期(Date)和时间(Time)。格式化的时间字符串主要也是针对日期和时间的 
1、基础用法 
NSDate* now = [NSDate date]; 
NSDateFormatter* fmt = [[NSDateFormatter alloc] init]; 
fmt.dateStyle = kCFDateFormatterShortStyle; 
fmt.timeStyle = kCFDateFormatterShortStyle; 
fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; 
NSString* dateString = [fmt stringFromDate:now]; 
NSLog(@"%@", dateString); 
[fmt release]; 
打印输出:10/29/12, 2:27 PM 
这使用的系统提供的格式化字符串,通过 fmt.dateStyle 和 fmt.timeStyle 进行的设置。实例中使用的参数是 kCFDateFormatterShortStyle,此外还有: 
typedef CF_ENUM(CFIndex, CFDateFormatterStyle) {    // date and time format styles 
    kCFDateFormatterNoStyle = 0,       // 无输出 
    kCFDateFormatterShortStyle = 1,    // 10/29/12, 2:27 PM 
    kCFDateFormatterMediumStyle = 2,   // Oct 29, 2012, 2:36:59 PM 
    kCFDateFormatterLongStyle = 3,     // October 29, 2012, 2:38:46 PM GMT+08:00 
    kCFDateFormatterFullStyle = 4      // Monday, October 29, 2012, 2:39:56 PM China Standard Time 
}; 

自己写的date转换成nsstring: 

2. 自定义区域语言 
如上实例中,我们使用的是区域语言是 en_US,指的是美国英语。如果我们换成简体中文,则代码是: 
fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]; 
则对应的输出为: 
typedef CF_ENUM(CFIndex, CFDateFormatterStyle) {    // date and time format styles 
    kCFDateFormatterNoStyle = 0,       // 无输出 
    kCFDateFormatterShortStyle = 1,    // 12-10-29 下午2:52 
    kCFDateFormatterMediumStyle = 2,   // 2012-10-29 下午2:51:43 
    kCFDateFormatterLongStyle = 3,     // 2012年10月29日 GMT+0800下午2时51分08秒 
    kCFDateFormatterFullStyle = 4      // 2012年10月29日星期一 中国标准时间下午2时46分49秒 
}; 
世界通用的区域语言代码,详见 International Components for Unicode (ICU),   http://userguide.icu-project.org/formatparse/datetime 
3. 自定义日期时间格式 
NSDateFormatter提供了自定义日期时间的方法,主要是通过设置属性 dateFormat,常见的设置如下: 
NSDate* now = [NSDate date]; 
NSDateFormatter* fmt = [[NSDateFormatter alloc] init]; 
fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]; 
fmt.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss"; 
NSString* dateString = [fmt stringFromDate:now]; 
NSLog(@"%@", dateString); 
[fmt release]; 
打印输出:2012-10-29T16:08:40 

除了上面列出的,还可以指定很多格式,详见 http://userguide.icu-project.org/formatparse/datetime。 
结合设置Locale,还可以打印出本地化的字符串信息。 
NSDate* now = [NSDate date]; 
NSDateFormatter* fmt = [[NSDateFormatter alloc] init]; 
fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]; 
fmt.dateFormat = @"yyyy-MM-dd a HH:mm:ss EEEE"; 
NSString* dateString = [fmt stringFromDate:now]; 
NSLog(@"\n%@", dateString); 
[fmt release]; 
打印输出:2012-10-29 下午 16:25:27 星期一 

4. 自定义月份星期等字符 
NSDateFormatter中同样提供了相应的方式,去修改这些字符。一般情况下,使用相应区域语言下面的默认字符就OK了。但是你的确有这个需求,那么也是可以办到的。相应的方法非常多,如下: 

Managing AM and PM Symbols 

– AMSymbol 
– setAMSymbol: 
– PMSymbol 
– setPMSymbol: 
Managing Weekday Symbols 

– weekdaySymbols 
– setWeekdaySymbols: 
– shortWeekdaySymbols 
– setShortWeekdaySymbols: 
– veryShortWeekdaySymbols 
– setVeryShortWeekdaySymbols: 
– standaloneWeekdaySymbols 
– setStandaloneWeekdaySymbols: 
– shortStandaloneWeekdaySymbols 
– setShortStandaloneWeekdaySymbols: 
– veryShortStandaloneWeekdaySymbols 
– setVeryShortStandaloneWeekdaySymbols: 
Managing Month Symbols 

– monthSymbols 
– setMonthSymbols: 
– shortMonthSymbols 
– setShortMonthSymbols: 
– veryShortMonthSymbols 
– setVeryShortMonthSymbols: 
– standaloneMonthSymbols 
– setStandaloneMonthSymbols: 
– shortStandaloneMonthSymbols 
– setShortStandaloneMonthSymbols: 
– veryShortStandaloneMonthSymbols 
– setVeryShortStandaloneMonthSymbols: 
Managing Quarter Symbols 

– quarterSymbols 
– setQuarterSymbols: 
– shortQuarterSymbols 
– setShortQuarterSymbols: 
– standaloneQuarterSymbols 
– setStandaloneQuarterSymbols: 
– shortStandaloneQuarterSymbols 
– setShortStandaloneQuarterSymbols: 
Managing Era Symbols 

– eraSymbols 
– setEraSymbols: 
– longEraSymbols 
– setLongEraSymbols: 

date转换成nsstring方法: 
- (NSString *)dateFromString:(NSString *)dateString 

    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; 
    [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
    NSDate *date = [dateFormat dateFromString:dateString]; 
    [dateFormat setDateFormat:@"yyyy-MM-dd"]; 
    NSString *srting = [dateFormat stringFromDate:date]; 
    [dateFormat release]; 
    return srting; 

带样式的时间转换 
- (NSString *)dateFromStringWithDateStyle:(NSDateFormatterStyle)dateStyle 

    NSDate* now = [NSDate date]; 
    NSDateFormatter* fmt = [[NSDateFormatter alloc] init]; 
    fmt.dateStyle = dateStyle; 
    fmt.timeStyle = dateStyle; 
    fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]; 
    NSString* dateString = [fmt stringFromDate:now]; 
    [fmt release]; 
    return dateString; 
     
}
0 0
原创粉丝点击