
这里是我的代码:
func getDayOfWeek(today:String)->Int{ var formatter:NSDateFormatter = NSDateFormatter() formatter.dateFormat = "YYYY-MM-DD" var todayDate:NSDate = formatter.dateFromString(today)! var myCalendar:NSCalendar = NSCalendar(calendarIDentifIEr: NSGregorianCalendar) var myComponents = myCalendar.components(NSCalendarUnit.WeekdayOrdinalCalendarUnit,fromDate: todayDate) var weekDay = myComponents.weekdayOrdinal return weekDay} 所以我知道NSCalendarUnit.WeekdayOrdinalCalendar是错误的,但我试过我认为大多数逻辑组合。并且也搞乱了myComponents.weekdayOrdinal例如使用mycomponents.day或.weekday。
这里是我的选择在什么使用
static var EraCalendarUnit: NSCalendarUnit { get }static var YearCalendarUnit: NSCalendarUnit { get }static var MonthCalendarUnit: NSCalendarUnit { get }static var DayCalendarUnit: NSCalendarUnit { get }static var HourCalendarUnit: NSCalendarUnit { get }static var MinuteCalendarUnit: NSCalendarUnit { get }static var SecondCalendarUnit: NSCalendarUnit { get }static var WeekCalendarUnit: NSCalendarUnit { get }static var WeekdayCalendarUnit: NSCalendarUnit { get }static var WeekdayOrdinalCalendarUnit: NSCalendarUnit { get }static var QuarterCalendarUnit: NSCalendarUnit { get }static var WeekOfMonthCalendarUnit: NSCalendarUnit { get }static var WeekOfYearCalendarUnit: NSCalendarUnit { get }static var YearForWeekOfYearCalendarUnit: NSCalendarUnit { get }static var CalendarCalendarUnit: NSCalendarUnit { get }static var TimeZoneCalendarUnit: NSCalendarUnit { get } 我不清楚,因为没有DayOfWeekUnit选项(或类似的东西)。
任何推动在正确的方向获得正确的数字将是非常感激。
请注意,您的日期格式错误(
完整规格可以在这里找到:http://unicode.org/reports/tr35/tr35-6.html)。
使用自动类型推理可以简化函数,也可以在常量足够的地方使用变量:
func getDayOfWeek(today:String)->Int { let formatter = NSDateFormatter() formatter.dateFormat = "yyyy-MM-dd" let todayDate = formatter.dateFromString(today)! let myCalendar = NSCalendar(calendarIDentifIEr: NSCalendarIDentifIErGregorian)! let myComponents = myCalendar.components(.Weekday,fromDate: todayDate) let weekDay = myComponents.weekday return weekDay}let weekday = getDayOfWeek("2014-08-27")print(weekday) // 4 = Wednesday 然而,如果输入字符串无效,那么该函数在运行时会崩溃。正如Mike S正确地说,返回一个可选的是Swift的方式来处理这种情况:
func getDayOfWeek(today:String)->Int? { let formatter = NSDateFormatter() formatter.dateFormat = "yyyy-MM-dd" if let todayDate = formatter.dateFromString(today) { let myCalendar = NSCalendar(calendarIDentifIEr: NSCalendarIDentifIErGregorian)! let myComponents = myCalendar.components(.Weekday,fromDate: todayDate) let weekDay = myComponents.weekday return weekDay } else { return nil }} 其中将使用如:
if let weekday = getDayOfWeek("2014-08-27") { print(weekday)} else { print("bad input")} (为Swift 2 / Xcode 7更新)
更新Swift 3(Xcode 8):
func getDayOfWeek(_ today:String) -> Int? { let formatter = DateFormatter() formatter.dateFormat = "yyyy-MM-dd" guard let todayDate = formatter.date(from: today) else { return nil } let myCalendar = Calendar(IDentifIEr: .gregorian) let weekDay = myCalendar.component(.weekday,from: todayDate) return weekDay} 总结 以上是内存溢出为你收集整理的使用NSDate swift获取星期几全部内容,希望文章能够帮你解决使用NSDate swift获取星期几所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)