我试图获取当前日期NSDate()
与PHP
time();
调用中的日期之间的差异,例如:NSDate(timeIntervalSinceReferenceDate: 1417147270)
。如何获得两个日期之间的时间差。我想有一个比较两个日期的函数,if(seconds > 60)
然后返回分钟,if(minutes > 60)
返回小时和if(hours > 24)
返回天等等。
我应该怎么做?
编辑:当前接受的答案已经完全做了我想要做的。我建议您以方便使用的方式获取它,以便以PHP
time()
函数使用的形式获取两个日期之间的时间。如果您对PHP不太熟悉,那么这是从1970年1月1日开始的秒数。这对于PHP后端非常有用。如果您使用的是NodeJS之类的后端,则可能需要考虑下面提供的其他一些选项。
Xcode 8.3•Swift 3.1或更高版本
您可以使用日历来帮助您创建扩展以进行日期计算,如下所示:
extension Date {
/// Returns the amount of years from another date
func years(from date: Date) -> Int {
return Calendar.current.dateComponents([.year], from: date, to: self).year ?? 0
}
/// Returns the amount of months from another date
func months(from date: Date) -> Int {
return Calendar.current.dateComponents([.month], from: date, to: self).month ?? 0
}
/// Returns the amount of weeks from another date
func weeks(from date: Date) -> Int {
return Calendar.current.dateComponents([.weekOfMonth], from: date, to: self).weekOfMonth ?? 0
}
/// Returns the amount of days from another date
func days(from date: Date) -> Int {
return Calendar.current.dateComponents([.day], from: date, to: self).day ?? 0
}
/// Returns the amount of hours from another date
func hours(from date: Date) -> Int {
return Calendar.current.dateComponents([.hour], from: date, to: self).hour ?? 0
}
/// Returns the amount of minutes from another date
func minutes(from date: Date) -> Int {
return Calendar.current.dateComponents([.minute], from: date, to: self).minute ?? 0
}
/// Returns the amount of seconds from another date
func seconds(from date: Date) -> Int {
return Calendar.current.dateComponents([.second], from: date, to: self).second ?? 0
}
/// Returns the a custom time interval description from another date
func offset(from date: Date) -> String {
if years(from: date) > 0 { return "\(years(from: date))y" }
if months(from: date) > 0 { return "\(months(from: date))M" }
if weeks(from: date) > 0 { return "\(weeks(from: date))w" }
if days(from: date) > 0 { return "\(days(from: date))d" }
if hours(from: date) > 0 { return "\(hours(from: date))h" }
if minutes(from: date) > 0 { return "\(minutes(from: date))m" }
if seconds(from: date) > 0 { return "\(seconds(from: date))s" }
return ""
}
}
使用日期组件格式化程序
let dateComponentsFormatter = DateComponentsFormatter()
dateComponentsFormatter.allowedUnits = [.year,.month,.weekOfMonth,.day,.hour,.minute,.second]
dateComponentsFormatter.maximumUnitCount = 1
dateComponentsFormatter.unitsStyle = .full
dateComponentsFormatter.string(from: Date(), to: Date(timeIntervalSinceNow: 4000000)) // "1 month"
let date1 = DateComponents(calendar: .current, year: 2014, month: 11, day: 28, hour: 5, minute: 9).date!
let date2 = DateComponents(calendar: .current, year: 2015, month: 8, day: 28, hour: 5, minute: 9).date!
let years = date2.years(from: date1) // 0
let months = date2.months(from: date1) // 9
let weeks = date2.weeks(from: date1) // 39
let days = date2.days(from: date1) // 273
let hours = date2.hours(from: date1) // 6,553
let minutes = date2.minutes(from: date1) // 393,180
let seconds = date2.seconds(from: date1) // 23,590,800
let timeOffset = date2.offset(from: date1) // "9M"
let date3 = DateComponents(calendar: .current, year: 2014, month: 11, day: 28, hour: 5, minute: 9).date!
let date4 = DateComponents(calendar: .current, year: 2015, month: 11, day: 28, hour: 5, minute: 9).date!
let timeOffset2 = date4.offset(from: date3) // "1y"
let date5 = DateComponents(calendar: .current, year: 2017, month: 4, day: 28).date!
let now = Date()
let timeOffset3 = now.offset(from: date5) // "1w"
我试图得到之间的差异的当前日期作为和一个日期从PHP调用例如:。我该如何计算这两个日期之间的时间差异。我想有一个函数,比较两个日期和
问题内容: 如果我有两个日期,我该如何使用JavaScript以分钟为单位获取两个日期之间的差额? 问题答案: 您可以签出以下代码: 或舍弃秒,如果您不想舍入分钟。
问题内容: 我需要获取两个日期之间的分钟数。我知道Joda是最适合使用的,但这是针对Android项目的,因此,我更喜欢使用一些外部库,并且我正在构建的应用程序不需要计算得很精确。 但是,我正在使用的代码似乎无法正常工作。我正在尝试获取“ 11/21/2011 7:00:00 AM”和“ 11/21/2011 1:00:00 PM”之间的分钟数(应该为360分钟),但是代码我’m using返回0
问题内容: 我正在为员工开发时间管理系统。 我想要持续时间员工迟到多少时间,或者他早到了多少时间。 我有以下结构。 我想要迟到的报告(即谁在ActualInTime之后的清晨到达,并且在hh:mm:ss中持续了多少时间),并且还想要提早去(即谁在格式为hh:mm:ss的持续时间中在ActualOutTime之前的傍晚去了) 那你能帮我吗。??? 问题答案: 此代码可能会帮助您…
问题内容: 如果我有两个这样的日期时间: 如何以以下格式获取这些日期时间之间的差异: 我用 但是我只有时间。 问题答案: 试试这个- 询问: 输出:
问题内容: 我将 Postgresql 数据库中的a 作为 Timestamp 数据类型存储,我想找出从数据库中存储的数据库到当前 timestamp 在数分钟或数小时内的差异。这样做的最好方法是什么?有内置的方法吗,还是我必须将其转换为long或其他形式? __ 问题答案: 我结束使用了此工具,只想将其发布给其他人(如果他们正在搜索)。