iOS 日期处理 - 解析日期

要从一个字符串中解析得到准确的时间,必须要指定正确的格式字符串,以及对应的时区标示

1、日期格式

1.年

  • y 将年份 (0-9) 显示为不带前导零的数字
  • yy 以带前导零的两位数字格式显示年份
  • yyy 以四位数字格式显示年份
  • yyyy 以四位数字格式显示年份

2.月

  • M 将月份显示为不带前导零的数字(如一月表示为 1)
  • MM 将月份显示为带前导零的数字(例如 01/12/01)
  • MMM 将月份显示为缩写形式(例如 Jan)
  • MMMM 将月份显示为完整月份名(例如 January)
    • 一月 Jan January
    • 二月 Feb February
    • 三月 Mar March
    • 四月 Apr April
    • 五月 May May
    • 六月 Jun June
    • 七月 Jul July
    • 八月 Aug August
    • 九月 Sep September
    • 十月 Oct October
    • 十一月 Nov November
    • 十二月 Dec December


3.日

  • d 将日显示为不带前导零的数字(如 1)
  • dd 将日显示为带前导零的数字(如 01)

4.星期

  • EEE 将日显示为缩写形式(例如 Sun)
  • EEEE 将日显示为全名(例如 Sunday)
    • 星期一 Mon Monday
    • 星期二 Tue Tuesday
    • 星期三 Wed Wednesday
    • 星期四 Thu Thursday
    • 星期五 Fri Friday
    • 星期六 Sat Saturday
    • 星期天 Sun Sunday

5.小时

  • h 使用 12 小时制将小时显示为不带前导零的数字(例如 1:15:15 PM)
  • hh 使用 12 小时制将小时显示为带前导零的数字(例如 01:15:15 PM)
  • H 使用 24 小时制将小时显示为不带前导零的数字(例如 1:15:15)
  • HH 使用 24 小时制将小时显示为带前导零的数字(例如 01:15:15)

6.分钟

  • m 将分钟显示为不带前导零的数字(例如 12:1:15)
  • mm 将分钟显示为带前导零的数字(例如 12:01:15)

7.秒

  • s 将秒显示为不带前导零的数字(例如 12:15:5)
  • ss 将秒显示为带前导零的数字(例如 12:15:05)
  • f 显示秒的小数部分
  • ff 将精确显示到百分之一秒
  • ffff 将精确显示到万分之一秒
  • 用户定义格式中最多可使用七个 f 符号

8.上午,下午

  • t 使用 12 小时制
    • 中午之前任一小时显示大写的 A
    • 中午到 11:59 PM 之间的任一小时显示大写的 P
  • tt 对于使用 12 小时制的区域设置
    • 中午之前任一小时显示大写的 AM
    • 中午到 11:59 PM 之间的任一小时显示大写的 PM
  • 对于使用 24 小时制的区域设置,不显示任何字符

9.时区

  • z 显示不带前导零的时区偏移量
  • zz 显示带前导零的时区偏移量(例如 -08)
  • zzz 显示完整的时区偏移量(例如 -0800)

10. 范例

///  根据指定的日期字符串创建日期
	///  dateSring 日期字符串
	///  日期字符串格式为:"Sun May 24 13:59:03 +0800 2015"
	class func createDate(dateSring: String) -> NSDate? {
		let df = NSDateFormatter()
		df.locale = NSLocale(localeIdentifier: "ch")
		df.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
		return df.dateFromString(dateSring)
	}


2、为NSDate 创建分类

/// 从字符串中解析到准确时间
// 参数 dateString 为时间字符串   formatString 为时间字符串对应的格式
class func getDate(dateString: String, formatString: String) -> NSDate? {
	// dateFormatter
	// 1. 实例化
	let df = NSDateFormatter()
	// 2. 要指定日期的地区,Xcode 6.3 beta 还不需要,地区需要指定英语
	// 注意:在真机调试的时候,一定要指定区域,否则以前版本同样无法转换
	df.locale = NSLocale(localeIdentifier: "en")
	
	// 3. 设置日期格式
	df.dateFormat = formatString
		
	// 4. 生成日期
	return df.dateFromString(dateString)
}


3、日期处理类 NSCalendar

。。。



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。