簡體   English   中英

Swift:如何將字符串轉換為時間格式的字符串?

[英]Swift : How to convert String to string with time format?

我的字符串值包括格式為“HH:mm” (16:50)的時間

我必須將此值轉換為“hh:mm ”格式(04:50)作為 SWIFT 中的字符串

我試過 NSDateFormatter 喜歡

let timeFormat = NSDateFormatter()
timeFormat.dateFormat = "hh:mm"
var dateFromStr = timeFormat.dateFromString("16:50")
var strFromDate = timeFormat.stringFromDate(dateFromStr)

但它不起作用..請告訴任何解決方案。

您需要 2 個NSDateFormatter s,一個用於dateFromString ,一個用於stringFromDate

let inFormatter = NSDateFormatter()
inFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
inFormatter.dateFormat = "HH:mm"

let outFormatter = NSDateFormatter()
outFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
outFormatter.dateFormat = "hh:mm"

let inStr = "16:50"
let date = inFormatter.dateFromString(inStr)!
let outStr = outFormatter.stringFromDate(date)
println(outStr) // -> outputs 04:50

斯威夫特 5

let inFormatter = DateFormatter()
inFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") as Locale
inFormatter.dateFormat = "hh:mm:ssa"

let outFormatter = DateFormatter()
outFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") as Locale
outFormatter.dateFormat = "hh:mm a"
 
let inStr = "16:50"       
let datess = inFormatter.date(from: inStr)!
let outStr = outFormatter.string(from: datess)
print(outstr)

2020 | 斯威夫特 5.1:

func dateTimeChangeFormat(str stringWithDate: String, inDateFormat: String, outDateFormat: String) -> String {
    let inFormatter = DateFormatter()
    inFormatter.locale = Locale(identifier: "en_US_POSIX")
    inFormatter.dateFormat = inDateFormat

    let outFormatter = DateFormatter()
    outFormatter.locale = Locale(identifier: "en_US_POSIX")
    outFormatter.dateFormat = outDateFormat

    let inStr = stringWithDate
    let date = inFormatter.date(from: inStr)!
    return outFormatter.string(from: date)
}

用法:

let outStr = dateTimeChangeFormat(str: "16:50", 
                                  inDateFormat:  "HH:mm", 
                                  outDateFormat: "hh:mm")

println(outStr) // -> outputs 04:50

我相信你應該在字符串中寫下時間。

    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "hh:mm"
    var date = dateFormatter.dateFromString("00:00")
    var str_from_date = dateFormatter.stringFromDate (date)

這是一篇舊帖子,但我認為值得注意的是isLenient允許您使用 1 個格式化程序而不是 2 個。

func normalizeTimeString(_ original: String) -> String? {
    let formatter = DateFormatter()
    formatter.isLenient = true
    formatter.dateFormat = "hh:mm"

    guard let date = formatter.date(from: original) else { return nil }
    let corrected = formatter.string(from: date)
    return corrected
}

normalizeTimeString("16:50") // Returns "04:50"

可以通過使用一個DateFormatter來實現。

另外在一個地方添加了一些額外的格式。 希望有人得到幫助。

Xcode 12 - Swift 5.3

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
var dateFromStr = dateFormatter.date(from: "16:50")!

// Time with date in long format
dateFormatter.dateFormat = "hh:mm:ss a 'on' MMMM dd, yyyy"
var timeInLongFromDate = dateFormatter.string(from: dateFromStr)
print(timeInLongFromDate)
// 04:50:00 PM on January 01, 2000

// Time with customisable format
dateFormatter.dateFormat = "hh:mm:ss a"
var timeFromDate = dateFormatter.string(from: dateFromStr)
print(timeFromDate)
// 04:50:00 PM

// Customisable AP/PM symbols
dateFormatter.amSymbol = "am"
dateFormatter.pmSymbol = "Pm"
dateFormatter.dateFormat = "a"
var amOrPm = dateFormatter.string(from: dateFromStr)
print(amOrPm)
// Pm
 func hrs12FormateString(date:String)-> String {
        let inFormatter = DateFormatter()
        inFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") as Locale
        inFormatter.dateFormat = "HH:mm"

        let outFormatter = DateFormatter()
        outFormatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") as Locale
        outFormatter.dateFormat = "hh:mm a"  
        let inStr = date 
        let date = inFormatter.date(from: inStr)!
        let outStr = outFormatter.string(from: date)
        return outStr
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM