我的API以UTC格式发送日期字符串,如2016年2月20日上午11:45。 为了在我的时区显示日期,我将日期从UTC转换为本地时区,如下面的代码
data-value
如果我的设备时间格式为12 HR,上面的代码工作正常,但如果我使用24小时的设备日期,则上面的代码无效。事件,它无法将UTC字符串转换为日期。
请检查设备上面的代码,它在模拟器中工作正常。
答案 0 :(得分:2)
在@Martin R的帮助下,以下代码为我工作。
let sourceDateString = "12/20/2016 11:45 AM"
let formatter = DateFormatter()
formatter.dateFormat = "MM/dd/yyyy hh:mm a"
formatter.timeZone = TimeZone(identifier: "UTC")
formatter.locale = Locale(identifier: "en_US_POSIX")
let date = formatter.date(from: sourceDateString)
print(date)
formatter.timeZone = NSTimeZone.local
formatter.dateFormat = "MMM dd,yyyy hh:mm a"
let strDate = formatter.string(from: date!)
print(strDate)
我忘记添加“POSIX”。
答案 1 :(得分:0)
快速解决此问题是将12小时转换为34小时格式。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateformatter.dateFormat = @"hh:mm a";
NSDate *date = [dateformatter dateFromString:departTime];
dateformatter.dateFormat = @"HH:mm";
NSString *time24 = [dateformatter stringFromDate:date];
departTimelbl.text=time24;
在这里你可以替换 formatter.dateFormat =“MM / dd / yyyy hh:mm a” formatter.dateFormat =“MM / dd / yyyy HH:mm
答案 2 :(得分:0)
使用Swift 3.0编写的代码
您需要在日期格式化程序上提供本地标识符。
以下是经过工作和测试的代码。
let sourceDateString = "12/22/2016 09:19 AM"
let formatter = DateFormatter()
formatter.dateFormat = "MM/dd/yyyy hh:mm a"
formatter.locale = Locale(identifier: "en-US")
formatter.timeZone = TimeZone(identifier: "UTC")
let date = formatter.date(from: sourceDateString)
print("\(date)")
formatter.timeZone = NSTimeZone.local
formatter.dateFormat = "MMM dd,yyyy hh:mm a"
let strDate = formatter.string(from: date!)
print(strDate)
如果有效,请告诉我。