首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSDate的NSDateComponents

NSDate的NSDateComponents
EN

Stack Overflow用户
提问于 2011-06-25 23:17:04
回答 4查看 24.8K关注 0票数 29

如何获取单个NSDate的NSDateComponents?我不想要两个日期之间的差异的组成部分,只是秒,分钟,小时,日,月和年的NSDate?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-25 23:22:56

Apple docs中有一个示例,如清单3所示:获取日期组件

代码语言:javascript
复制
NSDate *today = [NSDate date];
NSCalendar *gregorian = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *weekdayComponents =
                    [gregorian components:(NSDayCalendarUnit | 
                                           NSWeekdayCalendarUnit) fromDate:today];
NSInteger day = [weekdayComponents day];
NSInteger weekday = [weekdayComponents weekday];

请注意,在调用components方法时,您必须将所需的calendar units“或”在一起。

票数 46
EN

Stack Overflow用户

发布于 2011-06-25 23:25:13

使用NSCalendar的方法:

- (NSDateComponents *)components:(NSUInteger)unitFlags fromDate:(NSDate *)date

像这样:

代码语言:javascript
复制
unsigned unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |  NSDayCalendarUnit;
NSDate *date = [NSDate date];


NSCalendar * cal = [NSCalendar currentCalendar];
NSDateComponents *comps = [cal components:unitFlags fromDate:date];
票数 8
EN

Stack Overflow用户

发布于 2016-12-18 05:57:46

根据苹果开发人员文档,DateComponents具有secondminutehourdaymonthyear实例属性。下面的Swift 5Playground代码展示了如何使用DateComponentsDate实例中获取秒、分钟、小时、日、月和年组件

代码语言:javascript
复制
import Foundation

var calendar = Calendar(identifier: .gregorian)
calendar.timeZone = TimeZone(abbreviation: "CET")!
let date = Date()

// Get seconds, minutes, hours, day, month and year
let components = calendar.dateComponents([.second, .minute, .hour, .day, .month, .year], from: date)
let seconds = components.second
let minutes = components.minute
let hours = components.hour
let day = components.day
let month = components.month
let year = components.year

// Print components
print(String(describing: seconds)) // prints Optional(33)
print(String(describing: minutes)) // prints Optional(42)
print(String(describing: hours)) // prints Optional(22)
print(String(describing: day)) // prints Optional(17)
print(String(describing: month)) // prints Optional(12)
print(String(describing: year)) // prints Optional(2016)

/* ... */

// Set a formatter in order to display date
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .long
formatter.timeZone = TimeZone(abbreviation: "CET")
formatter.locale = Locale(identifier: "fr_FR")
print(formatter.string(from: date)) // prints 17/12/2016 22:42:33 UTC+1
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6478651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档