【发布时间】:2018-07-13 13:02:34
【问题描述】:
我正在尝试将我从服务器返回的日期增加 3 小时。 publication.DateTime 是一个字符串,我需要先将其转换为日期,然后再进行操作。
这是我的尝试:
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
let date = dateFormatter.date(from:(publication.DateTime)!) //date is nil here
let calendar = Calendar.current
let components = calendar.dateComponents([.year, .month, .day, .hour], from: date!)
let finalDate = calendar.date(from:components)
let newDate = calendar.date(
byAdding: .hour,
value: 3,
to: finalDate!)
我做错了什么?我试图在网上对这个问题进行研究,似乎大多数帖子都来自旧版本的 Swift,所以也许新的 Swift 中有一些东西我遗漏或做错了?
编辑:更改日期格式有效,但在字符串 onbject 中添加 3 小时的时间现在看起来像例如15:0:0 而不是之前的 12:34:17。我希望它是 15:34:17。
【问题讨论】:
-
发布日期时间字符串
-
publication.DateTime的值是多少?这些问题绝大多数是因为它的字符串格式不完全匹配dateFormatter.dateFormat。 -
@Connor 例如像这样:“2018-07-12T12:43:17”
-
来自
iOS10+我们有NSISO8601DateFormatter用于该日期格式。 -
每当我必须编写手动格式字符串时,我都会使用nsdateformatter.com。比翻阅 Apple 的文档更容易。
标签: ios swift dateformatter