ios - 如何用 "Today at xx:xx pm", "Yesterday at xx:xx am"之类的人类语言显示日期?

标签 ios nsdate swift nsdateformatter

我有一个日期“2014-07-02 20:57:38 +0000”,我想将它的格式设置为“今天晚上 8:57”。 我希望如果一个字符串是昨天,则将其显示为“昨天上午 9:00”。如果既不是今天也不是昨天,只需显示实际日期,例如“27/6 at 7:53 pm”。

我能够使用下面的代码获取格式为“8:57 AM”的时间。

            var formatter : NSDateFormatter = NSDateFormatter()
            formatter.dateFormat = "h:mm a"

            // message.createdAt is the date
            let dateString = formatter.stringFromDate(message.createdAt)
            println(dateString)

            //output = 8:57 AM

但是,当我使用下面的代码时,它返回一个空字符串。

            var formatter : NSDateFormatter = NSDateFormatter()
            formatter.dateFormat = "h:mm a"
            formatter.doesRelativeDateFormatting = true  //<-- This doesn't work

            let dateString = formatter.stringFromDate(message.createdAt)
            println(dateString)

            //output = (nothing, its a blank string)

如何在 Swift 中使它工作并显示“今天”或“昨天”?

最佳答案

它为空的原因是您的日期格式只有时间部分。结合 .doesRelativeDateFormatting 给你空字符串。如果您想要自定义时间格式,我认为您需要单独的日期和时间格式化程序:

let now = NSDate()

let dateFormatter = NSDateFormatter()
dateFormatter.dateStyle = .MediumStyle
dateFormatter.doesRelativeDateFormatting = true

let timeFormatter = NSDateFormatter()
timeFormatter.dateFormat = "h:mm a"

let time = "\(dateFormatter.stringFromDate(now)), \(timeFormatter.stringFromDate(now))"
println(time)      // prints "Today, 5:10 PM"

关于ios - 如何用 "Today at xx:xx pm", "Yesterday at xx:xx am"之类的人类语言显示日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24540984/

相关文章:

javascript - iPad Safari iOS - SECURITY_ERR : Dom Exception 18 when accessing "document.cookie"

ios - 该应用程序在 :setRefreshInterval 中引用了非公共(public)选择器

ios - 以编程方式添加的自定义 UIBarButtonItem 不遵循 tintColor

ios - 快速异步加载tableView图像

ios - CALayer 子类 "drawInContext"调用但不绘制?

objective-c - 使用 NSPredicate 过滤 NSMutableArray

swift - 为什么在 Swift Playground 中执行的结果与在应用程序中执行的结果不同?

objective-c - 如何将 NSDate 格式化为 NSString?

ios - 核心数据快速sugue不将数据推送到第二个 View Controller

ios - 如何以编程方式更改 UINavigationBar 高度?