在 2 行上格式化日期

Bog*_*nov 2 date swift

我希望日期在 2 行

public func smdt(date:NSDate)->NSString{
    var dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "h:mma dd MMMM yyyy"
    return dateFormatter.stringFromDate(date)
}
Run Code Online (Sandbox Code Playgroud)

我在字符串中添加时间,但我想在“dd”之前开始新行

例子: h:mma\ndd MMMM yyyy

应该:

晚上 7:12

2015 年 5 月 19 日

.dateFormat,\n不起作用...唯一的方法是检测 PM 和 19 之间的第一个空格在哪里并将其替换为\n. 怎么做?

它必须适用于地球上的每个时区。这意味着我不能使用 AM/PM 来分离......

Chr*_*örz 6

您的代码应该可以工作。也许它让您感到困惑,例如,如果您从操场内检查返回值的值,该值是这样的:

"6:21PM\n19 May 2015"
Run Code Online (Sandbox Code Playgroud)

但是如果我像这样使用你的代码:

public func smdt(date:NSDate)->NSString{
    var dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "h:mma\ndd MMMM yyyy"
    return dateFormatter.stringFromDate(date)
}
Run Code Online (Sandbox Code Playgroud)

并使用println以下方法调用该值:

println(smdt2(NSDate()))
Run Code Online (Sandbox Code Playgroud)

打印出来的值是这样的:

6:22PM
19 May 2015
Run Code Online (Sandbox Code Playgroud)

所以你可以像你已经尝试过的那样使用你的代码。

但是您也可以像这样拆分小时和日/月,然后将其连接起来:

public func smdt(date:NSDate)->NSString{
    var dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "h:mma"
    var hour = dateFormatter.stringFromDate(date)
    dateFormatter.dateFormat = "dd MMMM yyyy"

    var otherPart = dateFormatter.stringFromDate(date)
    return "\(hour)\n\(otherPart)"
}
Run Code Online (Sandbox Code Playgroud)