在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教程的链接:

感谢收看! 😎