在Swift 3中显示时间
如果您曾经使用过Facebook,Instagram,Twitter或任何社交媒体平台,那么您肯定会看到显示时间,指示发布时间。 以防万一您不知道我要指的是什么,这是一张图片:
如您在每一行中看到的那样,每个用户下方都有一个字幕,指示某人喜欢您的帖子或关注您的时间。 今天,我想提供一个有关如何在您的应用程序中实现此功能的教程,因为我认为这一天将很方便。 在开始之前,我想指出的是,这最初是我在YouTube上从名为Brain Voong的开发人员(也称为“让我们构建该应用程序”)中看到的一个教程,但我认为我应该在我的博客中分享此教程。 如果你们还没有听说过他,我强烈建议您跟随他。 大脑有很多很棒的内容,我从他那里学到了很多东西。 我将在下面发布他的教程和他的频道。
让我们开始吧!
最新介绍
让日期= Date()
let pastDate = Date(timeIntervalSinceNow:-10)
Swift有一个名为Date()
的函数,它将显示当前日期和时间。 Date
还有另一个函数timeIntervalSinceNow
,它将显示自当前日期以来的时间(以秒为单位)。
创建日期扩展
延期日期{
func timeAgoDisplay()->字符串{
}
}
首先,我们要创建Date
的扩展名,并创建一个函数,该函数将显示自Date
以来经过的Date
。 我们只是在创建一个返回带有闭包块的String的函数。
在闭包块中实现
延期日期{
func timeAgoDisplay()->字符串{
让secondsAgo = Int(Date()。timeIntervalSince(self))
如果secondsAgo <60 {
返回“ \(secondsAgo)秒前”
}
否则,如果secondsAgo <60 * 60 {
返回“ \(secondsAgo / 60)分钟前”
}
否则,如果secondsAgo <60 * 60 * 24 {
返回“ \(secondsAgo / 60/60)小时前”
}
否则,如果秒数<60 * 60 * 24 * 7 {
返回“ \(secondsAgo / 60/60/24)天前”
}
返回“ \(secondsAgo / 60/60/24/7)星期前”
}
}
接下来,我们要创建一个常量,以秒为单位表示自日期以来的时间间隔。 由于timeIntervalSince
返回Double,因此我们希望将其构造为Int。 从这里开始,我们需要做一些数学运算以分别显示秒,分钟,小时,天和周。 在这里,我们创建了5条条件语句,以正确的格式显示Date
。 例如,如果我们的Date
是一天前,也就是86400秒,则条件语句将检查secondsAgo
是否小于60(秒)* 60(分钟)* 24(小时),如果不是,则将命中下一个条件语句,该语句将在1天前返回。
更好的方法
延期日期{
func timeAgoDisplay()->字符串{
让secondsAgo = Int(Date()。timeIntervalSince(self))
让分钟= 60
让小时= 60 *分钟
让一天= 24 *小时
令周= 7 *天
如果secondsAgo <分钟{
返回“ \(secondsAgo)秒前”
}
否则,如果secondsAgo <小时{
返回“ \(secondsAgo /分钟)分钟前”
}
否则,如果secondsAgo <天{
返回“ \(secondsAgo / hour)小时前”
}
否则,如果secondsAgo <周{
返回“ \(secondsAgo /天)天前”
}
返回“ \(secondsAgo /周)周前”
}
}
我们的第一个实现可能会使所有这些数字有些混乱,而没有给出任何注释,因此我们需要对其进行清理,因此更具可读性。 我们要做的就是再创建四个代表分钟,小时,天和周的常数。 而已!
将此扩展添加到您的武库中可能会非常有用,因为我确信您会在许多应用程序中使用它,至少我知道我会的。 希望对您有所帮助。 所有的功劳归我们创建该应用程序的Brain Voong所支持。 如果我的博客的任何部分不清楚,那么这里是Brain教程的链接:
感谢收看! 😎