在swift中将带有时区的日期字符串转换为秒

时间:2017-12-11 07:41:28

标签: ios swift nsdate nsdateformatter nsdatecomponents

我有一个日期字符串:" 2017年12月13日"

时区字符串:" 亚洲/加尔各答"

Swift 4.0 中获取Epoch timestamp 的时间 的方法是什么?

1 个答案:

答案 0 :(得分:1)

这里是解决方案:

// your input
let dateStr = "13 December 2017"
let timeZoneStr = "Asia/Kolkata"

// building the formatter
let formatter = DateFormatter()
formatter.dateFormat = "d MMMM yyyy"
formatter.timeZone = TimeZone(identifier: timeZoneStr)

// extracting the epoch
let date = formatter.date(from: dateStr) // Dec 13, 2017 at 3:30 AM
let epoch = date?.timeIntervalSince1970
print(epoch ?? "") // 1513103400

获取信息,此链接: http://userguide.icu-project.org/formatparse/datetime 是日期格式化程序的一个有趣的来源

<强>更新

使用扩展程序:

extension String {

  func epoch(dateFormat: String = "d MMMM yyyy", timeZone: String? = nil) -> TimeInterval? {
    // building the formatter
    let formatter = DateFormatter()
    formatter.dateFormat = dateFormat
    if let timeZone = timeZone { formatter.timeZone = TimeZone(identifier: timeZone) }

    // extracting the epoch
    let date = formatter.date(from: self)
    return date?.timeIntervalSince1970
  }

}

"13 December 2017".epoch(timeZone: "Asia/Kolkata") // 1513103400