ios - 如何在不转换为 Swift 中的任何时区的情况下将字符串更改为日期?

标签 ios swift nsdateformatter nstimezone

我知道围绕这个简单的问题有很多疑问,但我仍然无法弄清楚。

这是我想要的:

SelectedDateString = "19-08-2015 09:00 AM"
let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "dd-MM-yyyy HH:mm a"
    dateFormatter.timeZone = NSTimeZone();
    let SelectedUTCDate = dateFormatter.dateFromString(SelectedDateString)!
    println("SelectedLocalDate = \(SelectedLocalDate)") 
 // OUTPUT: SelectedLocalDate = 2015-08-18 18:30:00 +0000

如果我不使用 TimeZone:

    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "dd-MM-yyyy HH:mm a"
   // dateFormatter.timeZone = NSTimeZone();
    let SelectedUTCDate = dateFormatter.dateFromString(SelectedDateString)!
    println("SelectedLocalDate = \(SelectedLocalDate)")
   //OUTPUT: SelectedLocalDate = 2015-08-18 19:26:00 +0000

为什么时间和日期有变化?我想要的是:

//OUTPUT: SelectedLocalDate = 2015-08-19 09:00:00 +0000

我还想将本地日期转换为准确的 UTC 日期

//Like this: SelectedUTCDate = 2015-08-19 03:30:00 

inputString = "19-08-2015 10:45 am"  // My localtime is 10:35 AM, so I set 10 mins from now
 var currentUTCTime = NSDate() // currentUTCTime is 05: 15 AM. 

我想将 inputString 转换为其各自的 UTC 时间,并找出日期和字符串中两个时间之间的差异。

//Like this Date: diffInDate: 00-00-0000 00:10 and
// Like this String: diffInString: 10 mins

我怎样才能得到这两个?

最佳答案

let dateString = "19-08-2015 09:00 AM"
let dateFormatter = DateFormatter()
dateFormatter.calendar = Calendar(identifier: .iso8601)
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
dateFormatter.dateFormat = "dd-MM-yyyy hh:mm a"
if let dateFromString = dateFormatter.date(from: dateString) {
    print(dateFromString)   // "2015-08-19 09:00:00 +0000"
    dateFormatter.timeZone = .current
    dateFormatter.dateFormat = "dd-MM-yyyy hh:mm a Z"
    dateFormatter.string(from: dateFromString)  // 19-08-2015 06:00 AM -0300"
}

关于ios - 如何在不转换为 Swift 中的任何时区的情况下将字符串更改为日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32086087/

相关文章:

swift - 在运行时检查 Swift 中来自第三方框架的弱链接符号

ios - 如何在 iOS 中为类似标签的文本输入创建文本字段?

ios - PushSharp 库并向 APN 发送通知

ios - 收取未通过 iOS App Store 完成的月度订阅

swift - 如何快速识别字符串中的大写和小写字符?

ios - 从 NSArray 获取即将到来的月份

iphone - RemoteIO 的 AudioSession 设置与 iPod 一起玩

ios - 如何从快速应用程序的键盘上完全删除隐藏/完成按钮?

iphone - NSDateFormatter 在凌晨 2 点返回 nil

iOS - 使用不带时区计算的 stringDate 初始化 NSDate