Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios pt BR DateFormatter Swift的错误行为_Ios_Swift_Nsdate_Dateformatter - Fatal编程技术网

Ios pt BR DateFormatter Swift的错误行为

Ios pt BR DateFormatter Swift的错误行为,ios,swift,nsdate,dateformatter,Ios,Swift,Nsdate,Dateformatter,我有一个解析字符串日期的方法: let dateFormatterGet = DateFormatter() let stringDate = "31/01/1965" dateFormatterGet.dateFormat = "dd-MM-yyyy" dateFormatterGet.locale = Locale(identifier: "pt_BR") let birthDate = dateFormatterGet.date(from: stringDate)

我有一个解析字符串日期的方法:

  let dateFormatterGet = DateFormatter()
  let stringDate = "31/01/1965"
  dateFormatterGet.dateFormat = "dd-MM-yyyy"
  dateFormatterGet.locale = Locale(identifier: "pt_BR")
  let birthDate = dateFormatterGet.date(from: stringDate)
  print(birthDate)

如果日期是1965年1月31日(1月31日),则生日返回零,但如果我将日期更改为30,则一切正常。这里出了什么问题?

我无法重现。我得到了两个字符串的合理结果。我正在用Xcode 11GM2进行测试。你在哪个时区?那天钟在哪里调的?-比较类似的问题和可能的解决方案。@MartinR你是对的。问题是夏令时。如果你愿意,你可以回答,我会标记为正确。1965年1月31日,巴西的时钟向前调整了一小时@RobNapier:您可以通过设置
dateFormatterGet.timeZone=timeZone(标识符:“America/SaoèPaulo”)
@Joãopedromaris来重现问题。您只需将date formatter calendar属性设置为任何日历
dateFormatterGet.calendar=calendar(标识符:.iso8601)