从操场开始。我正在尝试创建一个简单的应用程序。

我创建了一个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)

其他回答

如果你需要以一种特定的方式格式化答案,你可以很容易地使用这个方法,default = "dd-MM-yyyy"。

extension Date {

   func today(format : String = "dd-MM-yyyy") -> String{
      let date = Date()
      let formatter = DateFormatter()
      formatter.dateFormat = format
      return formatter.string(from: date)
   }
}

获取今天的日期现在可以使用

Date().today() or Date().today("dd/MM/yyyy") 

这是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()

使用Swift 5 (Xcode 10 & Xcode 11)(来自法国UTC)

func getCurrentDateTime() {
    let now = Date()
    let formatter = DateFormatter()
    formatter.locale = Locale(identifier: "fr_FR")
    formatter.dateFormat = "EEEE dd MMMM YYYY HH:mm"
    myLabel.text = formatter.string(from: now)
    myLabel.font = UIFont(name: "HelveticaNeue-Light", size: 12)
    myLabel.textColor = UIColor.black
}

如果您只想显示日期,请设置formatter.dateFormat

formatter.dateFormat = "EEEE dd MMMM YYYY"

若要只显示小时,请更改格式化程序。dateFormat来

formatter.dateFormat = "HH:mm"

不要忘记在viewDidLoad上添加getCurrentDateTime()。

以下代码是最新的swift版本(5):

func getTimestamp()-> String {
     let timestamp = DateFormatter.localizedString(from: Date(), dateStyle: .medium, timeStyle: .short)
     return "\(timestamp)"
}

迅速回答:

 let date = NSDate()
 let calendar = NSCalendar.currentCalendar()
 let components = calendar.components([.Hour, .Minute], fromDate: date)
 let hour = components.hour
 let minutes = components.minute