DateFormatter问题迅速 [英] Dateformatter issue in swift

查看:39
本文介绍了DateFormatter问题迅速的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的API以类似UTC的日期向我发送日期字符串,例如2/20/2016 11:45 AM.为了在我的时区显示日期,我将日期从UTC转换为本地时区,如下面的代码

My API sending me date string in UTC like 2/20/2016 11:45 AM. For displaying date in my timezone, I am converting date from UTC to Local time zone like below code

    let sourceDateString = "12/20/2016 11:45 AM"
    let formatter = DateFormatter()
     formatter.dateFormat = "MM/dd/yyyy hh:mm a"
     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)

如果我的设备时间格式为12 HR,则以上代码工作正常,但如果我从设备中使用24小时日期,则上述代码无法正常工作.不能将UTC字符串转换为日期.

Above code is working fine if my device time format is in 12 HR but if I am using 24 Hr date from my device then above code is not working. Event it's not able to convert UTC string to date.

请在设备中检查以上代码,在模拟器中可以正常工作.

Please check above code in the device, it's working fine in simulator.

推荐答案

在@Martin R的帮助下,以下代码对我有用.

With help of @Martin R, Following code worked for me.

    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".

I forgot to add "POSIX".

这篇关于DateFormatter问题迅速的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆