从操场开始。我正在尝试创建一个简单的应用程序。
我创建了一个date对象,就像这样:
var date = NSDate()
我怎样才能得到当前的时间?在其他语言中,我可以这样做:
var hour = date.hour
但我找不到任何这样的属性/方法。我找到了一个方法,dateWithCalendarFormat。我应该用这个吗?如果是,怎么做?
从操场开始。我正在尝试创建一个简单的应用程序。
我创建了一个date对象,就像这样:
var date = NSDate()
我怎样才能得到当前的时间?在其他语言中,我可以这样做:
var hour = date.hour
但我找不到任何这样的属性/方法。我找到了一个方法,dateWithCalendarFormat。我应该用这个吗?如果是,怎么做?
当前回答
在Swift 5中,Foundation提供了许多从Date对象中获取小时值的方法。根据您的需要,您可以选择以下四个Playground代码片段之一。
# 1。使用Calendar dateComponents(_:from:)方法
Calendar有一个叫做dateComponents(_:from:)的方法。dateComponents(_:from:)有如下声明:
func dateComponents(_ components: Set<Calendar.Component>, from date: Date) -> DateComponents
使用日历时区返回日期的所有日期组件。
用法:
import Foundation
let date = Date()
let dateComponents = Calendar.current.dateComponents([.hour], from: date)
let hour = dateComponents.hour
print(String(describing: hour)) // may print: Optional(13)
# 2。使用Calendar组件(_:from:)方法
Calendar有一个叫做component(_:from:)的方法。组件(_:from:)有以下声明:
返回日期的一个组件的值。
func component(_ component: Calendar.Component, from date: Date) -> Int
用法:
import Foundation
let date = Date()
let hour = Calendar.current.component(.hour, from: date)
print(hour) // may print: 13
# 3。使用DateFormatter dateFormat属性
DateFormatter有一个名为dateFormat的属性。dateFormat有如下声明:
var dateFormat: String! { get set }
接收方使用的日期格式字符串。
用法:
import Foundation
let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH"
let hour = dateFormatter.string(from: date)
print(hour) // may print: 13
# 4。使用数据格式化器setLocalizedDateFormatFromTemplate(_:)方法
Dateformatter有一个名为setLocalizedDateFormatFromTemplate(_:)的方法。setLocalizedDateFormatFromTemplate(_:)有如下声明:
func setLocalizedDateFormatFromTemplate(_ dateFormatTemplate: String)
使用指定区域设置接收方的模板的日期格式。
用法:
import Foundation
let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.setLocalizedDateFormatFromTemplate("HH")
let hour = dateFormatter.string(from: date)
print(hour) // may print: 13
其他回答
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
一行Swift 5.2
let date = String(DateFormatter.localizedString(from: Date(), dateStyle: .medium, timeStyle: .short))
如果你只需要一天中的一小时
let calendar = NSCalendar.currentCalendar()
var hour = calendar.component(.Hour,fromDate: NSDate())
您可以在Date上创建一个扩展,这样您就可以轻松地在其他文件中调用它。下面是一个使用计算属性的日期扩展示例。
它会打印出来:“今天,下午4:55”
extension Date {
var formatter: DateFormatter? {
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .short
formatter.doesRelativeDateFormatting = true
return formatter
}
}
这是SWIFT扩展,以获得您当前的设备位置时间(GMT)。
func getGMTTimeDate() -> Date {
var comp: DateComponents = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute], from: self)
comp.calendar = Calendar.current
comp.timeZone = TimeZone(abbreviation: "GMT")!
return Calendar.current.date(from: comp)!
}
现在得到时间:-
Date().getGMTTimeDate()