我正在处理日期格式化程序,我从服务器中获得了字符串类型的日期响应。我转换为日期格式但我想要做的是转换日期然后根据当地时间进行管理。
For Example
if 12/06/2017, 06:48:03 is a date from server so i m from pakistan so it gives me a date and time According to GMT + 5 which is 12/06/2017, 11:48:03
same as from india it gives me a date and time According to GMT +5:30 which is 12/06/2017, 12:18:03
这是源代码
public class func converServerTimeStampToDate (_ timeStamp: String) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MM/dd/yyyy, hh:mm:ss a"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
let localDate = dateFormatter.date(from: timeStamp)
dateFormatter.timeZone = TimeZone.current
dateFormatter.dateFormat = "MM/dd/yyyy, hh:mm:ss a"
// return dateFormatter.string(from: localDate!)
return dateFormatter.date(from:dateFormatter.string(from:
localDate!))!
}
任何帮助都将不胜感激!!
答案 0 :(得分:4)
如果你想让结果成为Date对象,只需使用@ Intellij-Shivam答案的第一部分:
func serverToLocal(date:String) -> Date? {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
let localDate = dateFormatter.date(from: date)
return localDate
}
(请注意DateFormatter.date(from:)
返回一个可选项,这是正确的,因为输入日期字符串的格式可能不正确。)
当地时区没有Date
这样的东西。 Dates
没有时区。他们在全球各地及时录制。
要在当地时区显示日期,您可以使用DateFormatter
类方法localizedString()
:
let dateString = DateFormatter.localizedString(
inputDate,
dateStyle: .medium,
timeStyle: .medium)
答案 1 :(得分:1)
我希望这可以解决您的问题
func serverToLocal(date:String) -> Date {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
let date = dateFormatter.date(from: date)
dateFormatter.timeZone = TimeZone.current
let timeStamp = dateFormatter.string(from: date!)
return date
}