将字符串转换为日期不同于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
答
在斯威夫特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;
}
显示打印的'实际完成输出(“日期:\( dateLahir)“)'。 – rmaddy
顺便说一句 - 你的代码很好。你只需要了解打印一个Date对象的输出。 – rmaddy
日期格式化程序将使用您当前的时区转换日期字符串,而'print'通常会以GMT格式显示相应的日期/时间(最后您会看到一个“+ 0000”,这就是rmaddy要求共享的原因来自'print'语句的完整字符串)。底线,不要担心什么时间'印刷'恰好使用。转换为“日期”对象或从“日期”对象转换时,始终使用日期格式化程序(例如,如果在应用程序中显示日期,请使用DateFormatter构建字符串以显示最终用户)。 – Rob