如何将当前时间作为日期时间

 wocanimagebi 发布于 2023-01-11 13:49

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

我已经创建了一个这样的日期对象:

var date = NSDate()

我怎样才能获得当前时间?在其他语言中,我可以这样做:

var hour = date.hour

但我找不到任何类似的属性/方法.我找到了一种方法dateWithCalendarFormat.我应该用吗?如果是这样,怎么样?

12 个回答
  • 斯威夫特4

            let dateFormatter : DateFormatter = DateFormatter()
    //        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
             dateFormatter.dateFormat = "yyyy-MMM-dd HH:mm:ss"
            let date = Date()
            let dateString = dateFormatter.string(from: date)
            let interval = date.timeIntervalSince1970
    

    OUTPUT

    2018年5月1日10:41:31

    2023-01-11 13:50 回答
  • 斯威夫特2回答:

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

    2023-01-11 13:50 回答
  • Swift使得创建和使用扩展变得非常容易.我创建了一个sharedCode.swift文件,并在其中添加了枚举,扩展和其他有趣的东西.我创建了一个NSDate扩展来添加一些典型的功能,这些功能一次又一次地输入是费力和丑陋的:

    extension NSDate
    {
        func hour() -> Int
        {
            //Get Hour
            let calendar = NSCalendar.currentCalendar()
            let components = calendar.components(.Hour, fromDate: self)
            let hour = components.hour
    
            //Return Hour
            return hour
        }
    
    
        func minute() -> Int
        {
            //Get Minute
            let calendar = NSCalendar.currentCalendar()
            let components = calendar.components(.Minute, fromDate: self)
            let minute = components.minute
    
            //Return Minute
            return minute
        }
    
        func toShortTimeString() -> String
        {
            //Get Short Time String
            let formatter = NSDateFormatter()
            formatter.timeStyle = .ShortStyle
            let timeString = formatter.stringFromDate(self)
    
            //Return Short Time String
            return timeString
        }
    }
    

    使用此扩展程序,您现在可以执行以下操作:

            //Get Current Date
            let currentDate = NSDate()
    
            //Test Extensions in Log
            NSLog("(Current Hour = \(currentDate.hour())) (Current Minute = \(currentDate.minute())) (Current Short Time String = \(currentDate.toShortTimeString()))")
    

    上午11:51将写出:

    (当前小时= 11)(当前分钟= 51)(当前短时间字符串= 11:51 AM)

    2023-01-11 13:50 回答
  • 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的答案相比,你会得到这个数字,而不是字符串...选择你的选择!

    2023-01-11 13:51 回答
  • 如果你只需要一天的时间

    let calendar = NSCalendar.currentCalendar()
    var hour = calendar.component(.Hour,fromDate: NSDate())
    

    2023-01-11 13:51 回答
  • 使用Date Formatter -Swift 3.0

    //Date
    let dateFormatter = DateFormatter()
    dateFormatter.dateStyle = .medium
    let dateString = "Current date is: \(dateFormatter.string(from: Date() as Date))"
    labelfordate.text = String(dateString)
    
    
    //Time    
    let timeFormatter = DateFormatter()
    timeFormatter.timeStyle = .medium
    let timeString = "Current time is: \(timeFormatter.string(from: Date() as Date))"
    labelfortime.text = String(timeString)
    

    每秒更新日期和时间

    override func viewDidLoad() {
    super.viewDidLoad()
    
    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(DateAndTime.action), userInfo: nil, repeats: true)
    
           }
    
    func action()
        {
        //Date
        let dateFormatter = DateFormatter()
        dateFormatter.dateStyle = .medium
        let dateString = "Current date is: \(dateFormatter.string(from: Date() as Date))"
        labelfordate.text = String(dateString)
    
    
        //Time
        let timeFormatter = DateFormatter()
        timeFormatter.timeStyle = .medium
        let timeString = "Current time is: \(timeFormatter.string(from: Date() as Date))"
        labelfortime.text = String(timeString)
    
        }
    

    注意:Timer代码中的DateAndTime是类名.

    2023-01-11 13:51 回答
  • 使用Swift 3和Swift 4,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 component(_:from:)方法

    Calendar有一个叫做的方法component(_:from:).component(_: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.使用Dateformatter 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
    

    2023-01-11 13:51 回答
  • 我知道有很多答案,但我认为对我们来说可能更方便

    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)
        }
    }
    

    2023-01-11 13:51 回答
  • 在Swift 3中,

        let date = Date()
        let calendar = Calendar.current()
    
        let hour = calendar.component(.hour, from: date)
    

    2023-01-11 13:52 回答
  • 斯威夫特3:

    static func currentTime() -> String {
        let date = Date()
        let calendar = Calendar.current
        let hour = calendar.component(.hour, from: date)
        let minutes = calendar.component(.minute, from: date)
        return "\(hour):\(minutes)"
      }
    

    PS - 不确定问题的确切含义是将当前时间(和小时)作为日期时间,但希望上面的内容应该足以解释这个问题.

    2023-01-11 13:52 回答
  • 用Swift 4测试

    获取当前日期和时间

    您可以像这样简单地获取当前日期和时间:

    let currentDateTime = Date()
    

    但是,Date是一个64位浮点数,用于衡量自2001年1月1日00:00:00 UTC的参考日期以来的秒数.我可以通过使用看到当前日期时间的数字

    Date().timeIntervalSinceReferenceDate
    

    在撰写本文时,它又回来了497626515.185066,可能并不完全符合您的要求.继续阅读.

    创建另一个日期和时间

    方法1

    如果您知道参考日期之前或之后的秒数,则可以使用它.

    let someOtherDateTime = Date(timeIntervalSinceReferenceDate: -123456789.0) // Feb 2, 1997, 10:26 AM
    

    方法2

    当然,使用诸如年,月,日和小时(而不是相对秒)之类的东西会更容易Date.为此,您可以使用DateComponents指定组件,然后Calendar创建日期.在Calendar给出了Date上下文.否则,它将如何知道表达它的时区或日历?

    // Specify date components
    var dateComponents = DateComponents()
    dateComponents.year = 1980
    dateComponents.month = 7
    dateComponents.day = 11
    dateComponents.timeZone = TimeZone(abbreviation: "JST") // Japan Standard Time
    dateComponents.hour = 8
    dateComponents.minute = 34
    
    // Create date from components
    let userCalendar = Calendar.current // user calendar
    let someDateTime = userCalendar.date(from: dateComponents)
    

    其他时区缩写可以在这里找到.如果将其留空,则默认为使用用户的时区.

    方法3

    可以使用最简洁的方式(但不一定是最好的方式)DateFormatter.

    let formatter = DateFormatter()
    formatter.dateFormat = "yyyy/MM/dd HH:mm"
    let someDateTime = formatter.date(from: "2016/10/08 22:31")
    

    在统一的技术标准表明其他格式是DateFormatter支持.

    显示日期和时间

    方法1

    如果只想显示日期或时间的某些组件,可以使用它们CalendarUnit来指定要从中提取的组件Date.

    // get the current date and time
    let currentDateTime = Date()
    
    // get the user's calendar
    let userCalendar = Calendar.current
    
    // choose which date and time components are needed
    let requestedComponents: Set<Calendar.Component> = [
        .year,
        .month,
        .day,
        .hour,
        .minute,
        .second
    ]
    
    // get the components
    let dateTimeComponents = userCalendar.dateComponents(requestedComponents, from: currentDateTime)
    
    // now the components are available
    dateTimeComponents.year   // 2016
    dateTimeComponents.month  // 10
    dateTimeComponents.day    // 8
    dateTimeComponents.hour   // 22
    dateTimeComponents.minute // 42
    dateTimeComponents.second // 17
    

    也看到这个答案.

    方法2

    方法1为您提供了组件,但为每种样式,语言和区域格式化这些数字将是一项很大的工作.你不需要.这已经在DateFormatter课堂上为你完成了.

    // get the current date and time
    let currentDateTime = Date()
    
    // initialize the date formatter and set the style
    let formatter = DateFormatter()
    formatter.timeStyle = .medium
    formatter.dateStyle = .long
    
    // get the date time String from the date object
    formatter.string(from: currentDateTime) // October 8, 2016 at 10:48:53 PM
    

    以下是上述代码的延续,显示了更多格式选项:

    // "10/8/16, 10:52 PM"
    formatter.timeStyle = .short
    formatter.dateStyle = .short
    formatter.string(from: currentDateTime)
    
    // "Oct 8, 2016, 10:52:30 PM"
    formatter.timeStyle = .medium
    formatter.dateStyle = .medium
    formatter.string(from: currentDateTime)
    
    // "October 8, 2016 at 10:52:30 PM GMT+8"
    formatter.timeStyle = .long
    formatter.dateStyle = .long
    formatter.string(from: currentDateTime)
    
    // "October 8, 2016"
    formatter.timeStyle = .none
    formatter.dateStyle = .long
    formatter.string(from: currentDateTime)
    
    // "10:52:30 PM"
    formatter.timeStyle = .medium
    formatter.dateStyle = .none
    formatter.string(from: currentDateTime)
    

    但请记住,这是针对美国的英语区域.对于其他语言和区域,格式将看起来不同.

    进一步研究

    如何使用Swift 3中的日期和时间,第1部分:日期,日历和DateComponents

    如何在Swift 3中使用日期和时间,第2部分:DateFormatter

    如何在Swift 3中使用日期和时间,第3部分:日期算术

    2023-01-11 13:52 回答
  • 您也可以使用NSDateFormatter的便捷方法,例如,

    func printTimestamp() {
      let timestamp = NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .MediumStyle, timeStyle: .ShortStyle)
      print(timestamp)
    }
    printTimestamp() // Prints "Sep 9, 2014, 4:30 AM"
    

    2023-01-11 13:52 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有