我有以下来自服务器的日期<code>2019-09-05T10:37:49.494Z
它尝试这样做:
let dateFormatterGet = DateFormatter()
let dateFormatterPrint = DateFormatter()
var rawDate = "2019-09-05T10:37:49.494Z"
dateFormatterGet.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
dateFormatterPrint.dateFormat = "E, d MMM yyyy HH:mm"
var formattedDate = "Error Formatting date"
if let date = dateFormatterGet.date(from: rawDate) {
formattedDate = dateFormatterPrint.string(from: date)
print("Formatted Date : \(formattedDate)")
}else {
print("There was an error decoding the string")
}
这无法打印错误消息,我做错了什么,如何修复它?
问题是您没有告诉dateFormatterGet
如何解析毫秒。将日期格式修改为:
dateFormatterGet。dateFormat=“yyyy-MM-dd'T'HH:MM:ss.SSSZ”
您提供的格式看起来像是iso 8601日期。因此,我建议使用<code>ISO8601日期格式化程序
您可以指定选项来匹配您的字符串,下面是一个示例
let dateString = "2019-09-05T10:37:49.494Z"
let formatter = ISO8601DateFormatter()
formatter.formatOptions = [
.withDashSeparatorInDate,
.withFullDate,
.withFullTime,
.withFractionalSeconds,
.withColonSeparatorInTime
]
// "Sep 5, 2019 at 12:37 PM"
let date = formatter.date(from: dateString) ?? Date()
//"Thursday, September 5, 2019 at 12:37:49 PM"
let formattedDate = DateFormatter.localizedString(
from: date,
dateStyle: .full,
timeStyle: .medium
)
你快到了。
使用(NS)DateFormatter的一个小技巧是将dateFormat置于日期字符串的上方/下方。
yyyy-MM-dd'T'HH:mm:ssZ
2019-09-05T10:37:49.494Z
然后,添加“空格”来对齐和分隔它们。
yyyy - MM - dd 'T' HH : mm : ss Z
2019 - 09 - 05 T 10 : 37 : 49 . 494Z
^ ^^^
我突出显示了缺失的字符。您需要通过dateFormat
告诉(NS)DateForware
如何解释这些附加字符。
让我们检查一下文档。
它是
小数秒-截断(像其他时间字段一样)到字母数。(示例显示了使用模式SSSS显示秒值12.34567)
所以使用“嗯SSSZ
应该解释它们并解决您的问题。
这就是您解决问题的方法。它解释了你的错误。但是,由于@Zombie它使用的是ISO格式,因此如果可用,请使用ISO8601日期格式
(如果可能)(iOS10)如果在将来的情况下您没有ISO格式,则可以使用这些提示;)
我想比较WebElements的日期,以验证排序是否正确。然而,日期的值如下:“2021年4月5日12:30pm”、“2018年10月22日09:18am”、“2015年2月1日11:36pm”,
问题内容: 嗨,我有以下字符串:2012-05-20T09:00:00.000Z,我想将其格式化为20/05/2012,9am 如何在Java中这样做? 谢谢 问题答案: 用先 来,然后 到
我有一个格式化的字符串日期 2020/04/16 (年/月/日) 我想把这个字符串解析成日期时间 显然不起作用,没有正确的日期格式。 有人知道把这个字符串解析成日期时间的最好方法是什么吗?
有什么建议吗? 谢谢
我刚到爪哇。Postgres db包含日期的格式为。我需要转换为。 我已经试过了,但是显示的结果是错误的
我需要将一些字符串日期转换为另一种格式的字符串日期 我想按照“yyyy-MM-dd'T'HH:MM:ss.SSSXX”模式获得ISO-8601格式的结果日期字符串 你能帮我实现这个吗?