Ios 格式化日期字符串Swift 3中的问题

Ios 格式化日期字符串Swift 3中的问题,ios,swift,nsdateformatter,nstimezone,Ios,Swift,Nsdateformatter,Nstimezone,我需要将以下日期字符串转换为Swift 3中的日期 Fri Dec 09 16:18:43 AMST 2016 这是我一直在使用的代码,但它在这个特定的日期字符串转换中获得了现金。(此日期是使用newdate().toString()方法登录到Android上的。) 数据库中有两种类型的字符串。我尝试了各种类型的时区格式(z/zz/zzz/zzzz/zzzzz),但总是myDate返回零 任何帮助都将不胜感激。 提前感谢。时区的苹果文档(缩写:): 一般来说,除了“GMT”这样的独特实例外,不

我需要将以下日期字符串转换为Swift 3中的日期

Fri Dec 09 16:18:43 AMST 2016
这是我一直在使用的代码,但它在这个特定的日期字符串转换中获得了现金。(此日期是使用
newdate().toString()
方法登录到Android上的。)

数据库中有两种类型的字符串。我尝试了各种类型的时区格式(z/zz/zzz/zzzz/zzzzz),但总是
myDate
返回零

任何帮助都将不胜感激。
提前感谢。

时区的苹果文档(缩写:):

一般来说,除了“GMT”这样的独特实例外,不鼓励您使用缩写。时区缩写没有标准化,因此给定的缩写可能有多种含义

AMST代表“亚马逊夏季时间”(UTC-3)还是“亚美尼亚夏季时间”(UTC+5)?见:

这可能就是为什么它无法检测到正确的时区

我可以提出的解决办法:

  • 如果您知道AMST所在的时区:
    • 将日期字符串中的AMST替换为UTC-3或UTC+5
    • 从日期字符串中删除AMST并使用
      dateFormatter.timeZone=timeZone(secondsFromGMT:-3或5*3600)
  • 让源输出一个更精确的时区

  • 注意以下代码,其中正确理解了AMST:

    let df = DateFormatter()
    df.locale = Locale.init(identifier: "pt_BR") // assuming AMST is Amazon Summer Time (UTC -3)
    df.dateFormat = "HH:mm:ss z"
    
    print(df.date(from: "16:18:43 AMST")) // Optional(2000-01-01 19:18:43 +0000)
    

    但是,一旦你输入了英文的日期或月份名称(如Fri或Dec),它将生成
    nil
    (因为它们不是葡萄牙语)。

    字符串包含
    AMST
    使用此名称:尝试使用不带时区的名称,如果此名称不适用,请尝试然后将日期格式重新安排为“eemmddhh:mm:ss zzz yyyy”和dateFormatter.timeZone=NSTimeZone.local或尝试设置local.current
    let df = DateFormatter()
    df.locale = Locale.init(identifier: "pt_BR") // assuming AMST is Amazon Summer Time (UTC -3)
    df.dateFormat = "HH:mm:ss z"
    
    print(df.date(from: "16:18:43 AMST")) // Optional(2000-01-01 19:18:43 +0000)