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

打印输出:10/29/12, 2:27 PM
这使用的系统提供的格式化字符串,通过 fmt.dateStyle 和 fmt.timeStyle 进行的设置。实例中使用的参数是 kCFDateFormatterShortStyle,此外还有:

 typedef CF_ENUM(CFIndex, CFDateFormatterStyle) {    // date and time format styles
kCFDateFormatterNoStyle = , // 无输出
kCFDateFormatterShortStyle = , // 10/29/12, 2:27 PM
kCFDateFormatterMediumStyle = , // Oct 29, 2012, 2:36:59 PM
kCFDateFormatterLongStyle = , // October 29, 2012, 2:38:46 PM GMT+08:00
kCFDateFormatterFullStyle = // Monday, October 29, 2012, 2:39:56 PM China Standard Time
};

2. 自定义区域语言
如上实例中,我们使用的是区域语言是 en_US,指的是美国英语。如果我们换成简体中文,则代码是:

 fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];

则对应的输出为:

 typedef CF_ENUM(CFIndex, CFDateFormatterStyle) {    // date and time format styles
kCFDateFormatterNoStyle = , // 无输出
kCFDateFormatterShortStyle = , // 12-10-29 下午2:52
kCFDateFormatterMediumStyle = , // 2012-10-29 下午2:51:43
kCFDateFormatterLongStyle = , // 2012年10月29日 GMT+0800下午2时51分08秒
kCFDateFormatterFullStyle = // 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);

打印输出: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);

打印输出: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:

zz:http://www.cnblogs.com/xinus/archive/2012/10/29/NSDateFormatter_samples.html

iOS开发--NSDateFormatter的更多相关文章

  1. [IOS 开发] NSDateFormatter的格式字符串 -- 《整理的笔记》

    在ios开发中, OBjective-C中的NSDate是一个挺讨厌的类型, 自己找不到转换成字符串的类型,还得带一个NSDateFormatter的类型. 官方文档上对NSDateFormatter ...

  2. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总

    --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...

  3. iOS开发之浅谈MVVM的架构设计与团队协作

    今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  4. ios开发中的小技巧

    在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...

  5. iOS开发系列—Objective-C之Foundation框架

    概述 我们前面的章节中就一直新建Cocoa Class,那么Cocoa到底是什么,它和我们前面以及后面要讲的内容到底有什么关系呢?Objective-C开发中经常用到NSObject,那么这个对象到底 ...

  6. iOS开发之新浪微博山寨版代码优化

    之前发表过一篇博客“IOS开发之新浪围脖”,在编写代码的时候太偏重功能的实现了,写完基本功能后看着代码有些别扭,特别是用到的四种cell的类,重复代码有点多,所以今天花点时间把代码重构一下.为了减少代 ...

  7. IOS开发之新浪围脖

    IOS开发和Web开发一样,网络请求方式包括Get和Post方式.Get和Post两者有和特点和区别,在本篇博客中不做过多的论述,本篇的重点在于如何GET数据和POST数据.下面还会提到如何在我们的项 ...

  8. iOS开发系列通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开

    --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...

  9. IOS NSDate NSDateFormatter 导致相差8小时

    时间问题应该是所有编程语言都要处理的.详细学过php的同学知道,php中也会有相差8小时的问题,然而php可以非常方便的解决的,直接设置下就好了 我最近在学习IOS的过程中,发现IOS的日期处理也是个 ...

随机推荐

  1. ggplot2 pdf import in Adobe Illustrator missing font AdobePiStd

    The font AdobePiStd is missing. Affected text will be displayed using a substitute font. 缺少字体 AdobeP ...

  2. [redis] redis连接远程客户端查询数据

    F:cd redis-2.8.12redis-cli.exe -h 192.168.6.107 -p 16680redis-cli.exe -h 192.168.6.107 -p 16681redis ...

  3. 启动LINUX系统后,进入图形化界面的命令

    1.进入xWindow的命令 $startx回车 或者修改/etc/inittab文件 cd /etc vi inittab 寻找: id:3:initdefault: 改为: id:5:initde ...

  4. USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

    其实之前也有提及过,Cypress公司提供的官方文件和应用手册真的可以解决很多问题.做的也很人性化,操作也及其简单,几乎只要在 TD_int()里面配置一些常用的参数即可,其他都可以不用操作. 作为一 ...

  5. 电源PI相关知识讲解

    电源层与地线层的谐振控制 一旦PCB的电源与地层的形状.距离以及中间介质定下来以后,发生谐振的频率也就定下来了. 采用LC等效电路,不考虑PCB上的损耗,而这些损耗往往在高频影响尤为明显,例如趋肤效应 ...

  6. Android 8 Wifi 初始化过程

    记录一下wifi初始化过程. packages/apps/Settings/src/com/android/settings/wifi/WifiSettings.java public void on ...

  7. iPhone开发中,关于视图跳转的总结(转)

    iPhone开发中,关于视图跳转的总结 iPhone开发中从一个视图跳到另一个视图有三种方法: 1. self.view addSubView:view .self.window addSubView ...

  8. C#基础 ---------------单利模式

    一.引言 最近在设计模式的一些内容,主要的参考书籍是<Head First 设计模式>,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了 ...

  9. (转)live555学习笔记-UsageEnvironment和TaskScheduler

    2011-12-6阅读1264 评论1 一直想学习流媒体服务器的设计,这几天有点时间,看了一下live555的源代码.live555是一个开源的跨平台流媒体服务器,使用编程语言是C++.将现阶段学习笔 ...

  10. xml根据属性去重。如csprj去重

    public static void distinct(string filePath) { //1.创建XML文档对象 XmlDocument doc = new XmlDocument(); // ...