将Java的LocalDateTime/ OffsetDateTime转换为Swift 4

4

在Swift 4中,LocalDateTime和OffsetDateTime的等效物是什么?

我正在尝试使用Json编码Java日期并在Swift中解码它们。看起来Swift只有一个Date对象。


你能具体一点吗? - Laurenz Albe
更新了。这有帮助吗? - gke
你能提供一个(简化的)JSON示例吗?这样可能会更好。 - Ole V.V.
2个回答

2

Swift使用Date结构体来表示时间点,始终存储在UTC中。如果您需要本地日期时间,可以使用CalendarDateFormatter,例如:

import Foundation

let date = Date();

let dateFormatter = DateFormatter()
dateFormatter.timeStyle = .medium 
dateFormatter.dateStyle = .none // ignore date
dateFormatter.timeZone = TimeZone(secondsFromGMT: 2*60*60)
let localDate = dateFormatter.string(from:date)

print("UTC Time: \(date)")  // 2018-10-18 08:15:07 +0000
print("Local Time: \(localDate)") // 10:15:07 AM

有多种方法可以将 Date 转换为本地时间,只需使用您选择的搜索引擎即可。


1
Java中的LocalDateTime类表示日期和时间,没有任何时区或UTC偏移量的概念。因此,它不代表一个瞬间,也不是时间轴上的一个点。 - Basil Bourque
@BasilBourque,我说的是Foundation Date类,而不是任何Java类。实际上,Date是一个时间点。 - Andreas Oetjen
2
这就是我的观点,问题的标题部分涉及Java LocalDateTime。而这个答案并没有解决那一部分。 - Basil Bourque

1

由于Java的LocalDateTime只是用于存储本地日期和时间值的“容器”,因此我最近从Java中复制了这个想法,并创建了Swift版本:https://github.com/hoereth/LocalDateTime


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接