NSDateFormatter

iOS开发-日期转换那些事 NSDateFormatter NSDate 和 NSString 之间的相互转换是平常常用的方法,应用场景非常多。 NSDate和NSString之间的相互转换需要使用NSDateFormatter,NSDateFormatter提供了stringFromDate和dateFromString这两个方法,让我们进行转换。 NSDateFormatter转换格式 年 y 年份不带前导零(2009、2019) yy 显示... 阅读详情

前言:iOS开发中NSDateFormatter是一个很常用的类,用于格式化NSDate对象,支持本地化的信息。与时间相关的功能还可能会用到NSDateComponents类和NSCalendar类等。本文主要列出NSDateFormatter常见用法。


 NSDate对象包含两个部分,日期(Date)和时间(Time)。格式化的时间字符串主要也是针对日期和时间的。[以下代码中开启了ARC,所以没有release。]

1、基础用法

1 NSDate* now = [NSDate date];
2 NSDateFormatter* fmt = [[NSDateFormatter alloc] init];
3 fmt.dateStyle = kCFDateFormatterShortStyle;
4 fmt.timeStyle = kCFDateFormatterShortStyle;
5 fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
6 NSString* dateString = [fmt stringFromDate:now];
7 NSLog(@"%@", dateString);

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

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

1 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,常见的设置如下:

1 NSDate* now = [NSDate date];
2 NSDateFormatter* fmt = [[NSDateFormatter alloc] init];
3 fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
4 fmt.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss";
5 NSString* dateString = [fmt stringFromDate:now];
6 NSLog(@"%@", dateString);

打印输出:2012-10-29T16:08:40

除了上面列出的,还可以指定很多格式,详见http://userguide.icu-project.org/formatparse/datetime。
结合设置Locale,还可以打印出本地化的字符串信息。

1 NSDate* now = [NSDate date];
2 NSDateFormatter* fmt = [[NSDateFormatter alloc] init];
3 fmt.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
4 fmt.dateFormat = @"yyyy-MM-dd a HH:mm:ss EEEE";
5 NSString* dateString = [fmt stringFromDate:now];
6 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:
Vue3 - Arco Design Vue 表格组件 table 隐藏鼠标移入时 hover 高亮背景色,el-table 组件去除鼠标悬停在表格行的 hover 高亮效果(改变鼠标移入时的背景色) vue3,arcodesignvue,arcodesign,表格,a-table,hover,表格hover的class类名是什么,class,hover,在arcodesignvue项目中,表格组件如何去掉鼠标移入时的hover效果,vue3arco.design表格组件修改鼠标移入行的背景颜色,table表格,取消表格行row移入高亮效果,去掉鼠标移入行时的hover效果,取消a-table的hover状态,取消高亮显示,隐藏表格鼠标hover效果,去除鼠标触摸变色效果,如何取消arco表 阅读详情

相关推荐

CSP-J 初赛模拟卷1 题解

只有一棵子树有后继,其他的都是叶结点才能保证树的深度最大,此时还剩(n-5)个结点,最后加上2,得到(n-3),即为答案。题解:先修改p的指针域,让它的左指针域指向q,然后再让q的右指针域赋值给p的右指针域,再然后修改q的右指针域使其指向p,最后需要改变的指针域就是原先q结点的后继节点的左指针域内容。设n个元素的入栈序列是1,2,3,...,n,出栈序列为p1,p2,...,pn,若p1=n,则pi(1≤i≤n)的值为(1)输入的三个数中,第二个数应是[0,11]上的整数,否则会出现数组越界的问题。

Sat77GryHp_Pro的博客 2805

NSDateFormatter格式详细列表一览

感谢原作者:http://www.cnblogs.com/xinus/archive/2012/10/29/NSDateFormatter_samples.html 前言:iOS开发中NSDateFormatter是一个很常用的类,用于格式化NSDate对象,支持本地化的信息。与时间相关的功能还可能会用到NSDateComponents类和NSCalendar类等。本文主要列出N

NewJerryj的专栏 2508

统信UOS系统盘空间不足?5分钟搞定扩容的图形化解决方案

本文提供统信UOS系统盘空间不足的图形化扩容解决方案,使用GParted分区编辑器在不丢失数据的情况下快速完成扩容。详细步骤包括准备工作、空间调整和执行验证,适合技术用户快速解决问题。

d6e7f8的博客 956

Objective-C中的日期格式器NSDateFormatter

NSDateFormatter代表一个日期格式器,它的功能就是完成NSDate与NSString之间的转换。

tinylight的专栏 2257

跟着团子学SAP CO:基于成本的完工百分比结算:Cost-based POC(以项目为例)

本文以英国及北美会计准则下的基于成本的POC的销售型项目结算对PS模块中的完工百分比进行介绍

Lucas1211的博客 2万+

大白映射 宝马Esys编程设码映射、USB设备映射

大白映射,宝马Esys设码编程、USB设备映射

denson0394的博客 4799

iOS Objective-C NSDateFormatter的一些使用参考

NSDateFormatter对象的作用,就是把NSDate对象转换为字符串,以及将字符串转换成NSDate。 1. 利用NSDateFormatterStyle枚举值将NSDate对象转换为字符串 NSDate对象表示的是一个时间,包括了日期,也包括了时分秒。所以NSDateFormatter也有两个方法,分别用来表示时间的日期和时分秒。 1.1 表示日期的方法 NSDateFormatter的setDateStyle:方法,用来设置日期的表示法。 NSDateFormatter *dateFormatt

假装你是大灰狼的专栏 1196

使用FloodRisk2插件进行洪水风险评估

入汛以来,长江流域持续的强降雨使得沿岸多地成为洪水风险极高地区,抗洪、抢险、救灾继新冠病毒之后成为又一个攻坚阵地。如何科学地评估洪水风险,是快速决策的关键。 实际生活中,根据风险是否可控,一般将洪水风险大致分为两类:一类是通过数据分析可以得出其发生的可能性和后果,如强降雨引发的区域性洪水、水库/大坝溃决洪水等。这类洪水可以通过有关资料分析和设定一定条件计算得到可能的损失后果,也就是说,风险可以预判。另一类洪水风险基本是未知的,如滑坡堵塞河道形成堰塞湖引发的洪水,无法预知事件发生的地点和规模,具体的洪水风险无

QGISClass的博客 2877

004-日期格式器(NSDateFormatter)

NSDateFormatter代表一个日期格式器,它可以完成NSDate与NSString之间的转换。 使用NSDateFormatter完成NSDate与NSString之间转换的步骤如下: 1⃣️创建一个NSDateFormatter对象。 2⃣️调用NSDateFormatter的setDateStyle: ,setTimeStyle:方法设置格式化日期,时间的风格。其中,日期,时间风

bao_libra的专栏 987

团子杂记:SAP收入确认工具RAR(Revenue Recognition&Reporting)在新收入准则下的应用

SAP收入确认工具RAR知识分享

Lucas1211的博客 4284

YOLO系列算法改进 | C3k2改进篇 | 融合DEConv细节增强卷积模块 | 细节增强+多分支差分卷积融合,标准卷积的完美涨点替代! | TIP 2024

YOLO系列算法改进 | C3k2改进篇 | 融合DEConv细节增强卷积模块 | 细节增强+多分支差分卷积融合,标准卷积的完美涨点替代! | TIP 2024 (以YOLO26最新目标检测模型为基础,融合C3k2_DEConv创新模块进行改进)

2502_91881744的博客 310

关于NSDateFormatter的线程安全问题

今天闲逛,突然捕获一个帖子说NSDateFormatter线程不安全,为了线程安全最好每个线程用自己的对象,如果需要用到的话

zskm001的博客 977

智护健康:基于 ESP32 的可穿戴式心率血氧远程监测手环设计与实现

随着健康管理理念的普及,可穿戴式健康监测设备成为刚需。本文设计了一款基于 ESP32 芯片的可穿戴式心率与血氧远程监测手环,通过集成专业生物传感器采集生理数据,借助 ESP32 的无线通信能力实现数据远程传输,搭配手机 APP 与云平台完成数据存储、分析与预警。文中详细阐述了硬件选型、模块接线、软件设计流程及核心代码实现,该手环具备低功耗、高精度、实时性强等特点,可满足日常健康监测与远程照护需求。

weixin_42300449的博客 1199

NSDateFormatter相关整理

今天在项目中碰到了NSDateFormatter的相关问题,在网上看了一些方法,觉得比较简单,就做一个简单的整理吧! Formatter译为格式,相应的NSDateFormatter就相当于是NSDate的转换类,将NSDate转换为另一种格式,或转换回来。NSDate没有自己的输出,需要借助NSDateFormatter以相应格式输出。这差不多就是NSDateFormatter的作用了吧。常用

Han_jihong的博客 632

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

NSDateFormatter之性能优化

NSDateFormatter之性能优化NSDateFormatter在开发过程使用算是频繁的,但是过度的创建NSDateFormatter用于NSDate与NSString之间转换,会导致App卡顿(特别是Cell上使用),打开Profile工具查一下性能,你会发现这种操作占CPU比例是非常高的。据官方NSDateFormatter官方文档说法,创建NSDateFormatter代价是比较高的,如

BabyStyles的博客 1387

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

NSDate与NSDateFormatter

1.NSDateFormatter配合NSDate与NSString之间的转化   NSDateFormatter有下面2个方法:   - (NSString *)stringFromDate:(NSDate*)date;//NSDate转NSString   - (NSDate *)dateFromString:(NSString*)string;//NSString转NSDate

The Life with iOS 972

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

OC -- NSDate和NSDateFormatter小结

这里要使用ios有关的日期时间api:(NSTimeInterval)是浮点型数,可精确到毫秒,1秒=1000毫秒 NSDate,类似java里面的Date对象,是对从1970-1-1毫秒数的封装,可记录时间;NSDateFormatter,类似java中的DateFormat相关的api,用于日期对象的格式化或者字符串解析为日期对象。   首先,创建一个日期格式化对象: NSDa

jy578154186_的专栏 2278

NSDateFormatter的格式化字符串

在开发中, 会经常使用到NSDate类型,但是NSDate类型和NSString类型互相转换时,稍微有些麻烦,需要使用NSDateFormatter类型来辅助,设置NSDateFormatter的格式,下面是将NSString类型转换为NSDate类型的例子。 NSString lastModifiedString = @"Mon, 06 Jun 2011 12:47:05 GMT"; NSDat...

onebutterfly 2309

iOS NSDateFormatter 不安全线程 处理

记得 上次我们开CodeReView大会 有人提出 " NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 去获取 nsdate 或者 nsstring (date)" 长时间 或者频次高的调用 该方法 就会出现页面操作犯卡eg滚动滑动切换. 查看cpu可以以明显看出 dateFormatter 创建 ...

weixin_33743703的博客 1316

NSDateFormatter格式汇总

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 初始化了一个NSDateFormatter变量后,对其调用setDateFormat方法,各种格式及运行结果如下: 1.我们最习惯的。 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss EEEE"]...

184

性能优化之NSDateFormatter

为什么要优化NSDateFormatter? 优化方式有哪些? 为什么要优化NSDateFormatter? 首先,过度的创建NSDateFormatter用于NSDate与NSString之间转换,会导致App卡顿,打开Profile工具查一下性能,你会发现这种操作占CPU比例是非常高的。据官方说法,创建NSDateFormatter代价是比较高的,如果你使用的非常频繁,那么建议你...

aonali6395的博客 253

NSDateFormatter转换时间为东八区时间

使用NSDateFormatter转换时间字符串时,默认的时区是系统时区,如我们使用一般都是北京时间(+8), 如果直接使用 [cpp] view plaincopy [dateFormatter dateFromString:@"2012-01-01 00:00:00"];   你会发现实际转换为2011-12-31 16:00:0

cyldone的专栏 6636

iOS|一个与 NSDateFormatter 有关的小 Bug

我们的 iOS APP 有一个小 Bug,场景简化后是这样:接口返回一个时间字符串,APP 里比较它与当前时间,如果当前时间晚于它,就显示一个按钮,否则不显示。本来是一个很简单的逻辑,但是,有一部分用户反馈,按钮该显示的时候却没有显示。分析结合用户反馈的信息,经过多次尝试后,才发现这个行为竟然与用户手机的时间制式有关——如果用户手机设置里的24小时制开关没有打开,那么这个 Bug 就会出现。相...

靠谱-ing 1296

NSDateFormatter的使用

//实例化一个NSDateFormatter对象 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; //设定时间格式,这里可以设置成自己需要的格式 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //用[NSDate date]

yesjava的专栏 703

iOSNSDate和NSDateFormatter

iOS开发中常需要对时间进行处理然后得到我们想要的。 NSDate用法 (1)返回系统当前时间        [NSDate date]   (2)返回以指定时间(GMT)为基准,然后过了secs秒的时间       //增加时间用正数,减少时间用负数(单位是秒)       [NSDate dateWithTimeInterval:3600 sinceDate:currentDat

RangingWon的博客 474
上一篇: 使用iOS手势UIGestureRecognizer
下一篇: NSDateFormatter的格式字符串
Ruansf
博客等级 码龄14年 1粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值