返回
时间基础知识: NSDate, NSTimeZone, NSLocale, NSDateComponents, NSCalendar, NSDateFormatter
IOS
2023-11-17 06:28:43
NSDate
NSDate类表示一个特定日期和时间。它是一个不可变类,这意味着一旦创建,就不能再更改其值。NSDate对象可以使用多种方式创建,包括:
- 从字符串创建:可以使用
dateWithString:
方法从字符串创建NSDate对象。例如:
let date = NSDate(string: "2020-03-08 12:00:00")
- 从时间戳创建:可以使用
dateWithTimeIntervalSince1970:
方法从时间戳创建NSDate对象。例如:
let date = NSDate(timeIntervalSince1970: 1583702400)
- 从日期组件创建:可以使用
dateWithDateComponents:
方法从日期组件创建NSDate对象。例如:
let dateComponents = NSDateComponents()
dateComponents.year = 2020
dateComponents.month = 3
dateComponents.day = 8
dateComponents.hour = 12
dateComponents.minute = 0
dateComponents.second = 0
let date = NSCalendar.current.date(from: dateComponents)!
NSTimeZone
NSTimeZone类表示一个时区。它是一个不可变类,这意味着一旦创建,就不能再更改其值。NSTimeZone对象可以使用多种方式创建,包括:
- 从字符串创建:可以使用
timeZoneWithName:
方法从字符串创建NSTimeZone对象。例如:
let timeZone = NSTimeZone(name: "Asia/Shanghai")
- 从缩写创建:可以使用
timeZoneWithAbbreviation:
方法从缩写创建NSTimeZone对象。例如:
let timeZone = NSTimeZone(abbreviation: "CST")
NSLocale
NSLocale类表示一个地域设置。它是一个不可变类,这意味着一旦创建,就不能再更改其值。NSLocale对象可以使用多种方式创建,包括:
- 从字符串创建:可以使用
localeWithLocaleIdentifier:
方法从字符串创建NSLocale对象。例如:
let locale = NSLocale(localeIdentifier: "en_US")
- 从国家和语言创建:可以使用
localeWithCountryCoder:languageCode:
方法从国家和语言创建NSLocale对象。例如:
let locale = NSLocale(localeIdentifier: "US", languageCode: "en")
NSDateComponents
NSDateComponents类表示一个日期和时间组件。它是一个不可变类,这意味着一旦创建,就不能再更改其值。NSDateComponents对象可以使用多种方式创建,包括:
- 从字符串创建:可以使用
dateComponentsWithString:
方法从字符串创建NSDateComponents对象。例如:
let dateComponents = NSDateComponents(string: "2020-03-08 12:00:00")
- 从日期和时间创建:可以使用
dateComponentsFromDate:
方法从日期和时间创建NSDateComponents对象。例如:
let date = NSDate()
let dateComponents = NSCalendar.current.components([.year, .month, .day, .hour, .minute, .second], from: date)
- 从另一个NSDateComponents对象创建:可以使用
dateComponentsWithDateComponents:
方法从另一个NSDateComponents对象创建NSDateComponents对象。例如:
let dateComponents1 = NSDateComponents()
dateComponents1.year = 2020
dateComponents1.month = 3
dateComponents1.day = 8
let dateComponents2 = NSDateComponents(dateComponents: dateComponents1)
dateComponents2.hour = 12
dateComponents2.minute = 0
dateComponents2.second = 0
NSCalendar
NSCalendar类表示一个日历。它是一个不可变类,这意味着一旦创建,就不能再更改其值。NSCalendar对象可以使用多种方式创建,包括:
- 从字符串创建:可以使用
calendarWithIdentifier:
方法从字符串创建NSCalendar对象。例如:
let calendar = NSCalendar(identifier: "gregorian")
- 从日期和时区创建:可以使用
calendarWithDate:timeZone:
方法从日期和时区创建NSCalendar对象。例如:
let date = NSDate()
let timeZone = NSTimeZone(name: "Asia/Shanghai")
let calendar = NSCalendar(date: date, timeZone: timeZone)
NSDateFormatter
NSDateFormatter类用于格式化日期和时间。它是一个不可变类,这意味着一旦创建,就不能再更改其值。NSDateFormatter对象可以使用多种方式创建,包括:
- 从字符串创建:可以使用
dateFormatterWithString:
方法从字符串创建NSDateFormatter对象。例如:
let dateFormatter = NSDateFormatter(string: "yyyy-MM-dd HH:mm:ss")
- 从日期格式化器样式创建:可以使用
dateFormatterWithDateStyle:timeStyle:
方法从日期格式化器样式创建NSDateFormatter对象。例如:
let dateFormatter = NSDateFormatter(dateStyle: .LongStyle, timeStyle: .ShortStyle)
使用示例
以下是一些使用NSDate、NSTimeZone、NSLocale、NSDateComponents、NSCalendar、NSDateFormatter的示例:
- 获取当前日期和时间:
let date = NSDate()
- 将字符串转换为日期:
let date = NSDate(string: "2020-03-08 12:00:00")
- 将日期转换为字符串:
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let dateString = dateFormatter.stringFromDate(date)
- 将日期添加到另一个日期:
let calendar = NSCalendar.current
let dateComponents = NSDateComponents()
dateComponents.day = 1
let newDate = calendar.dateByAddingComponents(dateComponents, toDate: date, options: [])
- 获取日期的年份:
let calendar = NSCalendar.current
let dateComponents = calendar.components([.year], fromDate: date)
let year = dateComponents.year
- 获取日期的月份:
let calendar = NSCalendar.current
let dateComponents = calendar.components([.month], fromDate: date)
let month = dateComponents.month
- 获取日期的日:
let calendar = NSCalendar.current
let dateComponents = calendar.components([.day], fromDate: date)
let day = dateComponents.day
- 获取日期的小时:
let calendar = NSCalendar.current
let dateComponents = calendar.components([.hour], fromDate: date)
let hour = dateComponents.hour
- 获取日期的分钟:
let calendar = NSCalendar.current
let dateComponents = calendar.components([.minute], fromDate: date)
let minute = dateComponents.minute
- 获取日期的秒:
let calendar = NSCalendar.current
let dateComponents = calendar.components([.second], fromDate: date)
let second = dateComponents.second
- 获取日期所在的时区:
let timeZone = date.timeZone
- 获取日期所在的地域设置:
let locale = date.locale
- 创建一个日期组件对象:
let dateComponents = NSDateComponents()
dateComponents.year = 2020
dateComponents.month = 3
dateComponents.day = 8
dateComponents.hour = 12
dateComponents.minute = 0
dateComponents.second = 0
- 使用日期组件对象创建一个日期:
let calendar = NSCalendar.current
let date = calendar.dateFromComponents(dateComponents)!
- 格式化日期:
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let dateString = dateFormatter.stringFromDate(date)
- 解析日期:
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let date = dateFormatter.dateFromString(dateString)