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

Ios 在swift中将带时区的日期字符串转换为秒,ios,swift,nsdate,nsdateformatter,nsdatecomponents,Ios,Swift,Nsdate,Nsdateformatter,Nsdatecomponents,我有一个日期字符串:“2017年12月13日” 时区字符串:亚洲/加尔各答 在Swift 4.0中,如何在几秒钟内获得 // your input let dateStr = "13 December 2017" let timeZoneStr = "Asia/Kolkata" // building the formatter let formatter = DateFormatter() formatter.dateFormat = "d MMMM yyyy" formatter.time

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

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

在Swift 4.0中,如何在几秒钟内获得

// 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
有关详细信息,请访问以下链接: 是一个有趣的日期格式化程序源


已更新

使用扩展名:

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

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