Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
两个时间间隔ios组件swift 3之间的差异_Ios_Date_Swift3_Nstimeinterval - Fatal编程技术网

两个时间间隔ios组件swift 3之间的差异

两个时间间隔ios组件swift 3之间的差异,ios,date,swift3,nstimeinterval,Ios,Date,Swift3,Nstimeinterval,我有两个时间间隔基本上我想转换找出它们之间的差异这是我的代码。但是,它不起作用 func dateformatter(date:Double) -> String { let timeElapsed:TimeInterval = TimeInterval(Int(date)) let timeNow:TimeInterval = TimeInterval(integerLiteral: Int64(Date().timeIntervalSince1970*1000))

我有两个时间间隔基本上我想转换找出它们之间的差异这是我的代码。但是,它不起作用

 func dateformatter(date:Double) -> String {

    let timeElapsed:TimeInterval = TimeInterval(Int(date))
    let timeNow:TimeInterval = TimeInterval(integerLiteral: Int64(Date().timeIntervalSince1970*1000))

    let date2:Date = Date(timeIntervalSince1970: timeElapsed )
    let date1:Date = Date(timeIntervalSince1970: timeNow )

    let calender:Calendar = Calendar.current
    let components:DateComponents = calender.dateComponents([.year, .month, .day, .hour, .minute], from: date1, to: date2)
    var returnString:String = ""
    print(components.second)
    if components.second! < 60 {
        returnString = "Just Now"
    }else if components.minute! >= 1{
        returnString = String(describing: components.minute) + " min ago"
    }else if components.hour! >= 1{
        returnString = String(describing: components.hour) + " hour ago"
    }else if components.day! >= 1{
        returnString = String(describing: components.day) + " days ago"
    }else if components.month! >= 1{
        returnString = String(describing: components.month)+" month ago"
    }else if components.year! >= 1 {
        returnString = String(describing: components.year)+" year ago"
    }
    return returnString
}
func日期格式化程序(日期:双精度)->字符串{
让时间流逝:时间间隔=时间间隔(整数(日期))
让timeNow:TimeInterval=TimeInterval(整数文件:Int64(日期().timeIntervalSince1970*1000))
让date2:Date=Date(时间间隔自1970年起:时间已过)
让date1:Date=Date(时间间隔1970:timeNow)
让日历:Calendar=Calendar.current
让组件:DateComponents=Calendar.DateComponents([.year、.month、.day、.hour、.minute],从:date1到:date2)
var returnString:String=“”
打印(组件。秒)
如果组件数小于60秒{
returnString=“刚才”
}如果components.minute!>=1,则为else{
returnString=String(描述:components.minute)+“min-ago”
}如果components.hour!>=1,则为else{
returnString=String(描述:components.hour)+“小时前”
}如果components.day!>=1,则为else{
returnString=String(描述:components.day)+“天以前”
}如果components.month!>=1,则为else{
returnString=String(描述:components.month)+“月前”
}否则,如果components.year!>=1{
returnString=String(描述:components.year)+“一年前”
}
返回字符串
}

无需在函数开始时进行所有转换
Date(timeIntervalSince1970:)
接受
NSTimeInterval
,但是,对于
double
,它只是一个
typealias

另外,由于您的第一个
if
语句检查
seconds
,因此需要将
.seconds
包含到组件参数列表中

您可以执行以下操作:

func dateformatter(date: Double) -> String {

    let date1:Date = Date() // Same you did before with timeNow variable
    let date2: Date = Date(timeIntervalSince1970: date)

    let calender:Calendar = Calendar.current
    let components: DateComponents = calender.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date1, to: date2)
    print(components)
    var returnString:String = ""
    print(components.second)
    if components.second! < 60 {
        returnString = "Just Now"
    }else if components.minute! >= 1{
        returnString = String(describing: components.minute) + " min ago"
    }else if components.hour! >= 1{
        returnString = String(describing: components.hour) + " hour ago"
    }else if components.day! >= 1{
        returnString = String(describing: components.day) + " days ago"
    }else if components.month! >= 1{
        returnString = String(describing: components.month)+" month ago"
    }else if components.year! >= 1 {
        returnString = String(describing: components.year)+" year ago"
    }
    return returnString
}
func日期格式化程序(日期:双精度)->字符串{
让date1:Date=Date()//与之前使用timeNow变量所做的相同
let Date 2:Date=日期(时间间隔自1970年起:日期)
让日历:Calendar=Calendar.current
让组件:DateComponents=Calendar.DateComponents([.year、.month、.day、.hour、.minute、.second],从:date1到:date2)
打印(组件)
var returnString:String=“”
打印(组件。秒)
如果组件数小于60秒{
returnString=“刚才”
}如果components.minute!>=1,则为else{
returnString=String(描述:components.minute)+“min-ago”
}如果components.hour!>=1,则为else{
returnString=String(描述:components.hour)+“小时前”
}如果components.day!>=1,则为else{
returnString=String(描述:components.day)+“天以前”
}如果components.month!>=1,则为else{
returnString=String(描述:components.month)+“月前”
}否则,如果components.year!>=1{
returnString=String(描述:components.year)+“一年前”
}
返回字符串
}

无需在函数开始时进行所有转换
Date(timeIntervalSince1970:)
接受
NSTimeInterval
,但是,对于
double
,它只是一个
typealias

另外,由于您的第一个
if
语句检查
seconds
,因此需要将
.seconds
包含到组件参数列表中

您可以执行以下操作:

func dateformatter(date: Double) -> String {

    let date1:Date = Date() // Same you did before with timeNow variable
    let date2: Date = Date(timeIntervalSince1970: date)

    let calender:Calendar = Calendar.current
    let components: DateComponents = calender.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date1, to: date2)
    print(components)
    var returnString:String = ""
    print(components.second)
    if components.second! < 60 {
        returnString = "Just Now"
    }else if components.minute! >= 1{
        returnString = String(describing: components.minute) + " min ago"
    }else if components.hour! >= 1{
        returnString = String(describing: components.hour) + " hour ago"
    }else if components.day! >= 1{
        returnString = String(describing: components.day) + " days ago"
    }else if components.month! >= 1{
        returnString = String(describing: components.month)+" month ago"
    }else if components.year! >= 1 {
        returnString = String(describing: components.year)+" year ago"
    }
    return returnString
}
func日期格式化程序(日期:双精度)->字符串{
让date1:Date=Date()//与之前使用timeNow变量所做的相同
let Date 2:Date=日期(时间间隔自1970年起:日期)
让日历:Calendar=Calendar.current
让组件:DateComponents=Calendar.DateComponents([.year、.month、.day、.hour、.minute、.second],从:date1到:date2)
打印(组件)
var returnString:String=“”
打印(组件。秒)
如果组件数小于60秒{
returnString=“刚才”
}如果components.minute!>=1,则为else{
returnString=String(描述:components.minute)+“min-ago”
}如果components.hour!>=1,则为else{
returnString=String(描述:components.hour)+“小时前”
}如果components.day!>=1,则为else{
returnString=String(描述:components.day)+“天以前”
}如果components.month!>=1,则为else{
returnString=String(描述:components.month)+“月前”
}否则,如果components.year!>=1{
returnString=String(描述:components.year)+“一年前”
}
返回字符串
}

只是一个提示,您的逻辑中存在一个错误,使得函数在任何情况下都返回“刚才”。下面是修改后的代码:

func timeElapsed(date: Date) -> String {

        let date1:Date = date
        let date2: Date = Date() // Same you did before with timeNow variable

        let calender:Calendar = Calendar.current
        let components: DateComponents = calender.dateComponents([.year, .month, .day, .hour, .minute, .second], from: date1, to: date2)
        print(components)
        var returnString:String = ""

        print(components.second!)

        if components.second! < 60 {
            returnString = "Just Now"
        }

        if components.minute! > 1{
            returnString = String(describing: components.minute!) + " mins ago"
        }
        else if components.minute! == 1 {

            returnString = "A minute ago"
        }

        if components.hour! > 1{
            returnString = String(describing: components.hour!) + " hours ago"
        }
        else if components.hour == 1 {

            returnString = "An hour ago"
        }

        if components.day! > 1{
            returnString = String(describing: components.day!) + " days ago"
        }
        else if components.day! == 1 {

            returnString = "Yesterday"
        }

        if components.month! > 1{
            returnString = String(describing: components.month!)+" months ago"
        }
        else if components.month! == 1 {

            returnString = "A month ago"
        }

        if components.year! > 1 {
            returnString = String(describing: components.year!)+" years ago"
        }
        else if components.year! == 1 {

            returnString = "A year ago"
        }

        return returnString
    }
func timeappeased(日期:date)->字符串{
让date1:Date=日期
让date2:Date=Date()//与之前使用timeNow变量所做的相同
让日历:Calendar=Calendar.current
让组件:DateComponents=Calendar.DateComponents([.year、.month、.day、.hour、.minute、.second],从:date1到:date2)
打印(组件)
var returnString:String=“”
打印(组件。秒!)
如果组件数小于60秒{
returnString=“刚才”
}
如果组件为0.5分钟!>1{
returnString=String(描述:components.minute!)+“分钟前”
}
否则,如果components.minute!==1{
returnString=“一分钟前”
}
如果0.1小时!>1{
returnString=String(描述:components.hour!)+“小时前”
}
如果components.hour==1,则为else{
returnString=“一小时前”
}
如果组件数为1.day!>1{
returnString=String(描述:components.day!)+“天以前”
}
否则,如果components.day!==1{
returnString=“昨天”
}
如果组件数.month!>1{
returnString=String(描述:components.month!)+“月前”
}
否则,如果components.month!==1{
returnString=“一个月前”
}
如果