首页时间的格式化显示(swift 实现)

本文介绍了一种将时间字符串转换为易于理解的分类格式的方法,并提供了一个具体的Swift代码实现示例。该方法能够根据时间字符串自动判断并转换为“刚刚”、“几分钟前”等常见表述,适用于社交应用中创建时间的显示。

格式化分析

  • 今年
    • 今天
      • 一分钟内
        • 刚刚
      • 一小时内
        • xx 分钟前
      • 其他
        -xx 小时前
    • 昨天
      • 昨天 08:19
    • 其他(前天或者更早)
      • 10-10 08:19
  • 其他(去年或者更早)
    • 2014-10-10 08:19

将时间转化抽取成一个分类

  • 时间字符串转成 NSDate

    • 只需要在给 create_at 设置值的时候才需要转化-也就需要转化一次
  • 事例代码

extension NSDate{
    class func convertCreatedText(timeStr: String) -> String{

        //设置格式
        CommonDateFormatter.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        CommonDateFormatter.locale = NSLocale(localeIdentifier: "en_US")
        //1.转化为 NSDate
        let date = CommonDateFormatter.dateFromString(timeStr)!

        if isThisYear(date){
            //如果是今年
            let calendar = NSCalendar.currentCalendar()

            if calendar.isDateInToday(date) {
                //如果是今天CommonDateFormatter
                let interval:Int = abs(Int(date.timeIntervalSinceNow))

                if interval < 60{
                    return "刚刚"
                } else if interval < 60 * 60{
                    return "\(interval/60)分钟前"
                } else if interval < 60 * 60 * 24{
                    return "\(interval/60/24)小时前"
                }

            }else if calendar.isDateInYesterday(date){

                CommonDateFormatter.dateFormat = "HH:mm"
                //不是今天
                return "昨天 \(CommonDateFormatter.stringFromDate(date))"
            } else{
                //今年的某一天
                CommonDateFormatter.dateFormat = "MM:dd HH:mm"
                return CommonDateFormatter.stringFromDate(date)
            }


        }else{
            //如果不是今年
            CommonDateFormatter.dateFormat = "yyyy-MM-dd HH:mm"

            return CommonDateFormatter.stringFromDate(date)
        }
        return ""
    }

    class func isThisYear(date:NSDate) -> Bool{

        CommonDateFormatter.dateFormat = "yyyy"

        //1.获取当前年份字符串
        let currentYearStr = CommonDateFormatter.stringFromDate(NSDate())

        //2.获取微博年份字符串
        let statusYearStr = CommonDateFormatter.stringFromDate(date)
        return currentYearStr == statusYearStr
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值