dateFromString() 返回错误日期 swift 3.0
dateFromString() returning wrong date swift 3.0
我在 fromDate.text(文本字段)中传递“01/12/2017”,但收到意外输出。
let formatter = DateFormatter.init()
formatter.dateFormat = "dd/mm/yyyy"
startDate = formatter.date(from: fromDate.text!)
print("startDate = \(startDate)")
输出是:31/12/2016
它必须是 dd/MM/yyyy
日期格式。 MM
大写。
日期的格式应该是 dd/MM/yyyy
而不是 dd/mm/yyyy
。 mm
表示分钟,MM
表示月份。
并在您的代码中添加以下行
formatter.timeZone = TimeZone(abbreviation: "GMT+0:00")
这行代码设置时区。如果你不这样做,那么你会在输出中得到 30/11/2017
。
这背后的原因是,当字符串日期不包含时间时,格式化程序会假设现在是午夜,而您也没有给出时区,因此它将采用当前时区。
func convertToString(of dateTo: Date) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy" //Your New Date format as per requirement change it own
let newDate: String = dateFormatter.string(from: dateTo) //pass Date here
print(newDate) //New formatted Date string
return newDate
}
我在 fromDate.text(文本字段)中传递“01/12/2017”,但收到意外输出。
let formatter = DateFormatter.init()
formatter.dateFormat = "dd/mm/yyyy"
startDate = formatter.date(from: fromDate.text!)
print("startDate = \(startDate)")
输出是:31/12/2016
它必须是 dd/MM/yyyy
日期格式。 MM
大写。
日期的格式应该是 dd/MM/yyyy
而不是 dd/mm/yyyy
。 mm
表示分钟,MM
表示月份。
并在您的代码中添加以下行
formatter.timeZone = TimeZone(abbreviation: "GMT+0:00")
这行代码设置时区。如果你不这样做,那么你会在输出中得到 30/11/2017
。
这背后的原因是,当字符串日期不包含时间时,格式化程序会假设现在是午夜,而您也没有给出时区,因此它将采用当前时区。
func convertToString(of dateTo: Date) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd/MM/yyyy" //Your New Date format as per requirement change it own
let newDate: String = dateFormatter.string(from: dateTo) //pass Date here
print(newDate) //New formatted Date string
return newDate
}