当前位置: 首页 > 面试题库 >

在Swift中将ISO8601字符串解析为日期

高奇
2023-03-14
问题内容

我从声称的API获取下一个字符串

所有日期格式均为ISO8601。

我正在尝试下一个代码

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
let updatedAtStr = "2016-06-05T16:56:57.019+01:00"
let updatedAt = dateFormatter.date(from: updatedAtStr)

不幸的是,结果 updatedAt 为nil


问题答案:

您的日期格式不正确,您需要考虑毫秒。

let dateFormatter = DateFormatter()

dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"

let updatedAtStr = "2016-06-05T16:56:57.019+01:00"
let updatedAt = dateFormatter.date(from: updatedAtStr) // "Jun 5, 2016, 4:56 PM"

需要澄清的是.SSS,在日期格式中添加可以解决此问题。



 类似资料:
  • 问题内容: 我正在尝试对JavaScript应用程序中的日期进行序列化/反序列化。 服务器端,我使用Java,JodaTime已安装在上面。我发现了如何使用UTC时区序列化为ISO,但是找不到如何进行反向操作。 这是我的代码 我不在乎是否使用Joda,只需要一个快速且有效的解决方案, 问题答案: 如果您使用的是Java 7或更早版本,则可以参考此文章。 如果您使用的是Java 8,则可以执行以下操

  • 问题内容: 如何将该字符串转换为,并仅保留年,月,日,小时? 它的中间部分真的使我不习惯使用日期时。 问题答案: 将ISO8601字符串转换为日期 从日期获取年,月,日和小时的日期部分 let components = calendar.dateComponents([.year, .month, .day, .hour], from: date) 最后创建一个新对象并删除分钟和几秒钟 还请考虑i

  • 我试图用GMT解析一个表示日期的字符串,但它在我的PC(太平洋)上的时区中打印出来。当我运行下面的时,我得到下面的输出。关于如何让解析器解析并返回GMT日期有什么想法吗?如果您看下面,我正在使用format.settimezone(timezone.gettimezone(“GMT”))设置时区;但它并没有产生预期的结果。 以下代码的输出: 10月29日星期一05:57:00 PDT 2012

  • 问题内容: 我学得很快,并且对将日期String转换为NSDate转换为string感到震惊。我正在以以下格式获取日期字符串:“2015年10月22日星期四07:45:17 +0000”。我需要以MM-dd-yyyy格式显示日期。我尝试了以下代码,但返回“ null”。 谁能帮忙哪里出问题了?期待帮助。提前致谢。 问题答案: 首先,您需要使用其格式将字符串转换为NSDate。然后,将更改为简单格式

  • 问题内容: 我想将日期字符串解析为日期。我在寻找其他问题,但没有找到答案。 错误消息是java.text.ParseException:而且我不知道怎么了。 你能帮我吗。提前致谢。 编辑:好的。我将其翻译成英文,但是我仍然遇到同样的问题。我不想更改输入,因为它来自邮件数据库。还有其他想法吗? 我发现了问题。我是瞎子 来自数据库的St是,不是 谢谢。 问题答案: 在德语中,“欧洲中部时间”是“Mit

  • 问题内容: 如何将下面的日期字符串解析为一个Date对象? 引发异常… 问题答案: 模式是错误的。您有3个字母的天的缩写,因此必须为。您有3个字母的月份缩写,因此必须为。由于这些日和月的缩写对语言环境敏感,因此您也希望将语言环境明确指定为英语,否则它将使用平台默认语言环境,而语言环境本身可能不是英语。 这在这里打印 根据我的时区是正确的。 如果您不想使用代替,我也会重新考虑。阅读javadoc以获