iOS NSDate(一)

待我称王封你为后i 2022-08-19 12:22 223阅读 0赞

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:

  1. 自定义区域语言
    如上实例中,我们使用的是区域语言是 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
  2. 自定义日期时间格式
    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 星期一

  1. 自定义月份星期等字符
    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 条评论,223人围观)

还没有评论,来说两句吧...

相关阅读

    相关 NSDate 和NSDateFormate

    1.创建日期对象         创建的对象,获得是0时区的时间(如果想获得自己处的时间,就加上自己所在时区的时间,如中国所在东八区所以就要+8)         NSDa