swift - 如何从标准日期时间格式中提取日期和时间?

标签 swift

我从 API 获取一个包含日期和时间的字符串:

 createdAt = "2019-08-12T10:34:05.000Z"

我还需要从此字符串和时间中提取日期。 我怎样才能得到两个给定日期字符串之间的时间差异?

例如如果我有两个字符串:

StartedOn = "2019-08-12T10:32:18.000Z"
StopedOn = "2019-08-12T10:34:05.000Z".

如何获取从开始到停止的时间。

swift 4,Xcode 10

最佳答案

使用DateFormatterString获取Date实例,即

let str = "2019-08-12T10:34:05.000Z"
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
let date = formatter.date(from: str)

现在,要获取时差,请将 timeIntervalSince(_:) 与 2 个 Date 对象一起使用,即

let startedOn = "2019-08-12T10:32:18.000Z"
let stoppedOn = "2019-08-12T10:34:05.000Z"
if let startedOnDate = formatter.date(from: startedOn), let stoppedOnDate = formatter.date(from: stoppedOn) {
    let timeInterval = stoppedOnDate.timeIntervalSince(startedOnDate)
    print(timeInterval)
}

如果您需要 2 个 Date 对象之间的更详细的组件,请像这样使用 Calendar 对象,

if let startedOnDate = formatter.date(from: startedOn), let stoppedOnDate = formatter.date(from: stoppedOn) {
    let calendar = Calendar(identifier: .gregorian)
    let components = calendar.dateComponents([.hour, .minute, .second], from: startedOnDate, to: stoppedOnDate)
    print(components) //hour: 0 minute: 1 second: 47
}

编辑:

要从 Date 对象中分别获取 datetime

let str = "2019-08-12T10:34:05.000Z"
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
if let date = formatter.date(from: str) {
    formatter.dateFormat = "hh:mm:ss a"
    let timeStr = formatter.string(from: date)
    print(timeStr) //add timeStr to your timeLabel here...

    formatter.dateFormat = "yyyy-MM-dd"
    let dateStr = formatter.string(from: date)
    print(dateStr) //add dateStr to your dateLabel here...
}

关于swift - 如何从标准日期时间格式中提取日期和时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57477116/

相关文章:

ios - 在 UISearchController 中搜索时无法在 tableView 中滚动

ios - TextView 字体大小根据设备屏幕自动调整

ios - MapleBacon.DiskStorage 3.0.0 升级后不再授予对镜像的访问权限 : why?

ios - 停止 UIDynamicAnimator Whit View 限制

ios - 如何快速获取选定日期的日期名称?

ios - key volumeAvailableCapacityKey、volumeAvailableCapacityForImportantUsageKey 和 volumeAvailableCapacityForOpportunisticUsageKey 之间的区别

ios - 在 Swift 2.0 中,字符串的最大长度是多少?

ios - 设置状态栏中文本的颜色不起作用(swift 3 - iOS 10)

ios - 快速创建参数化字符串或宏?

ios - 无法推断通用参数 'Element' Swift 闭包