将字符串转换为日期不同于swift 3

问题描述:

为什么?我将字符串转换为日期,输入不同的输出?将字符串转换为日期不同于swift 3

Input: 
let formatter = DateFormatter() 
formatter.dateFormat = "yyyy-MM-dd" 
dateLahir = formatter.date(from: "2017-10-05") 
print("date: \(dateLahir)") 

Output: 
date: 2017-10-04 
+1

显示打印的'实际完成输出(“日期:\( dateLahir)“)'。 – rmaddy

+1

顺便说一句 - 你的代码很好。你只需要了解打印一个Date对象的输出。 – rmaddy

+2

日期格式化程序将使用您当前的时区转换日期字符串,而'print'通常会以GMT格式显示相应的日期/时间(最后您会看到一个“+ 0000”,这就是rmaddy要求共享的原因来自'print'语句的完整字符串)。底线,不要担心什么时间'印刷'恰好使用。转换为“日期”对象或从“日期”对象转换时,始终使用日期格式化程序(例如,如果在应用程序中显示日期,请使用DateFormatter构建字符串以显示最终用户)。 – Rob

在斯威夫特3 转换日期为字符串

class func convertDateToString(_ dateStr:String?, fromDateFormat currentFormat:String, toDateFormat newFormat:String) -> String? 
    { 
     if dateStr == nil 
     { 
      return nil; 
     } 

     let formatter:DateFormatter = DateFormatter(); 
     formatter.dateFormat = currentFormat; 
     let date = formatter.date(from: dateStr!); 
     if date == nil 
     { 
      return ""; 
     } 
     formatter.dateFormat = newFormat; 
     let newStr : String = formatter.string(from: date!); 
     return newStr; 
    } 

字符串转换为日期

class func convertStringToDate(_ strDate:String, dateFormat:String) -> Date? 
{ 
    let formatter:DateFormatter = DateFormatter(); 
    formatter.dateFormat = dateFormat; 
    formatter.timeZone = TimeZone.autoupdatingCurrent 
    let date = formatter.date(from: strDate); 
    return date; 
}