【问题标题】:Converting date string with timezone to seconds in swift快速将带时区的日期字符串转换为秒
【发布时间】:2018-05-24 16:55:32
【问题描述】:

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

时区字符串:“Asia/Kolkata

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

【问题讨论】:

  • 如果您有简单的字符串“2017 年 12 月 13 日”来转换为日期,那么时区的位置是什么?
  • @Hexfire 我需要在该时区为该日期字符串生成纪元时间戳,而不考虑设备的本地时区并将其发送到服务器。
  • 好的,我认为下面你有一个很好的解决方案

标签: ios swift nsdate nsdateformatter nsdatecomponents


【解决方案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

【讨论】:

  • 德克萨斯州。更新了一个扩展:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-31
  • 2020-09-24
相关资源
最近更新 更多