从操场开始。我正在尝试创建一个简单的应用程序。
我创建了一个date对象,就像这样:
var date = NSDate()
我怎样才能得到当前的时间?在其他语言中,我可以这样做:
var hour = date.hour
但我找不到任何这样的属性/方法。我找到了一个方法,dateWithCalendarFormat。我应该用这个吗?如果是,怎么做?
从操场开始。我正在尝试创建一个简单的应用程序。
我创建了一个date对象,就像这样:
var date = NSDate()
我怎样才能得到当前的时间?在其他语言中,我可以这样做:
var hour = date.hour
但我找不到任何这样的属性/方法。我找到了一个方法,dateWithCalendarFormat。我应该用这个吗?如果是,怎么做?
当前回答
在Swift 3中,
let date = Date()
let calendar = Calendar.current()
let hour = calendar.component(.hour, from: date)
其他回答
我知道有很多答案,但我认为我的答案对许多人来说可能更方便
extension String {
init(epoch: Double) {
let date = Date(timeIntervalSince1970: epoch)
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy HH:mm:ssZZZ"
self = dateFormatter.string(from: date)
}
}
Xcode 8.2.1•Swift 3.0.2
extension Date {
var hour: Int { return Calendar.autoupdatingCurrent.component(.hour, from: self) }
}
let date = Date() // "Mar 16, 2017, 3:43 PM"
let hour = date.hour // 15
您可以在Date上创建一个扩展,这样您就可以轻松地在其他文件中调用它。下面是一个使用计算属性的日期扩展示例。
它会打印出来:“今天,下午4:55”
extension Date {
var formatter: DateFormatter? {
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .short
formatter.doesRelativeDateFormatting = true
return formatter
}
}
你可以用swift 4或5像bellow
let date = Date()
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd HH:mm:ss"
let dateString = df.string(from: date)
输出将像波纹管
2019-12-20 09:40:08
Swift 3更新:
let date = Date()
let calendar = Calendar.current
let hour = calendar.component(.hour, from: date)
let minutes = calendar.component(.minute, from: date)
我是这样做的:
let date = NSDate()
let calendar = NSCalendar.currentCalendar()
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute, fromDate: date)
let hour = components.hour
let minutes = components.minute
在objective-c中看到同样的问题,我如何从NSDate中获得小时和分钟?
和Nate的答案相比,你得到的是数字,而不是字符串……