以“st”、“nd”、“rd”和“th”格式显示日期

问题描述 投票:0回答:4

我必须以不同的格式显示日期。

例如。 7月21日

我没有找到任何可以将我的日期转换为这种格式的内容。如果有人知道请帮助我。

ios ios7 ios8 nsdateformatter
4个回答
20
投票

斯威夫特

extension Date {

    func dateFormatWithSuffix() -> String {
        return "dd'\(self.daySuffix())' MMMM yyyy"
    }

    func daySuffix() -> String {
        let calendar = Calendar.current
        let components = (calendar as NSCalendar).components(.day, from: self)
        let dayOfMonth = components.day
        switch dayOfMonth {
        case 1, 21, 31:
            return "st"
        case 2, 22:
            return "nd"
        case 3, 23:
            return "rd"
        default:
            return "th"
        }
    }
}

示例

let date = Date()
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = date.dateFormatWithSuffix()
print(dateFormatter.string(from: date))
// Output for current date: 22nd May 2019

14
投票
    func setCurrentDate() {
        let date = Date()

        // Use this to add st, nd, th, to the day
        let numberFormatter = NumberFormatter()
        numberFormatter.numberStyle = .ordinal
        numberFormatter.locale = Locale.current

        //Set other sections as preferred
        let monthFormatter = DateFormatter()
        monthFormatter.dateFormat = "MMM"

        // Works well for adding suffix
        let dayFormatter = DateFormatter()
        dayFormatter.dateFormat = "dd"

        let dayString = dayFormatter.string(from: date)
        let monthString = monthFormatter.string(from: date)

        // Add the suffix to the day
        let dayNumber = NSNumber(value: Int(dayString)!)
        let day = numberFormatter.string(from: dayNumber)!

        yourDateLabel.text = "\(day) \(monthString)"
}

标签目前将设置为 5 月 25 日


0
投票

扩展看起来像:

extension Int {
    public func toFormat() -> String {
        let formatter = NumberFormatter()
        formatter.numberStyle = .ordinal
        return formatter.string(from: NSNumber(value: self)) ?? ""
    }
}

使用方法:

let integerValue = 6
let expectedResult = integerValue.toFormat()

结果将是:

6th

-3
投票

您可以使用 NSDateFormatter 来显示您的 NSDate。它具有 dateStyle 和 timeStyle 等属性,可以轻松更改这些属性以获得您想要的格式。如果您需要更多灵活性,还可以使用 dateFormat 属性。

    let formatter = NSDateFormatter()
    formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
    formatter.stringFromDate(NSDate()) 
© www.soinside.com 2019 - 2024. All rights reserved.