2016-09-30 20 views
0

我嘗試格式化在法國的時候在我的iOS應用程序寫在斯威夫特3 這裏的數據串把時間在法國

2000-01-01T14:00:00.000Z

以下方法迅速3

func get_time_start() -> String { 
    let dateFormatter = DateFormatter() 
    dateFormatter.locale = Locale(identifier: "fr_FR") 
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 
    let timeStart = dateFormatter.date(from: time_start) 
    dateFormatter.dateFormat = "hh:mm" 
    return dateFormatter.string(from: timeStart!); 
} 

在我的應用程序給出了它的2:00

而我想顯示下午2點

我用它:dateFormatter.locale = Locale (identifier: "fr_FR") 但它不工作有另一種操作嗎?

回答

0

您需要解決兩個日期格式:

func get_time_start() -> String { 
    let dateFormatter = DateFormatter() 
    dateFormatter.locale = Locale(identifier: "fr_FR") 
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
    let timeStart = dateFormatter.date(from: time_start) 
    dateFormatter.dateFormat = "hh:mm a" 
    return dateFormatter.string(from: timeStart!); 
} 

更重要的是,不要用dateFormatDate轉換爲字符串。相反,請設置timeStyle,使其格式正確無需強制使用特定格式。

func get_time_start() -> String { 
    let dateFormatter = DateFormatter() 
    dateFormatter.locale = Locale(identifier: "fr_FR") 
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
    let timeStart = dateFormatter.date(from: time_start) 
    dateFormatter.dateFormat = nil 
    dateFormatter.timeStyle = .medium 
    dateFormatter.dateStyle = .none 
    return dateFormatter.string(from: timeStart!); 
} 

在這兩種情況下,如果你希望所有用戶看到該區域設置特定格式化(這將是罕見的)的時候只設置語言環境。