Ios dateFromString()返回错误的日期swift 3.0
我正在fromDate.text(文本字段)中传递“01/12/2017”,但收到意外输出Ios dateFromString()返回错误的日期swift 3.0,ios,swift3,Ios,Swift3,我正在fromDate.text(文本字段)中传递“01/12/2017”,但收到意外输出 let formatter = DateFormatter.init() formatter.dateFormat = "dd/mm/yyyy" startDate = formatter.date(from: fromDate.text!) print("startDate = \(startDate)") 输出为:2016年12月31日必须为dd/MM
let formatter = DateFormatter.init()
formatter.dateFormat = "dd/mm/yyyy"
startDate = formatter.date(from: fromDate.text!)
print("startDate = \(startDate)")
输出为:2016年12月31日必须为dd/MM/yyyydateformat
MM
大写。日期格式应为dd/MM/yyyy
而不是dd/MM/yyyyy
。mm
表示分钟,mm
表示月份
并在代码中添加以下行
formatter.timeZone = TimeZone(abbreviation: "GMT+0:00")
这行代码设置时区。如果您没有,那么您将在输出中获得2017年11月30日的
这背后的原因是当字符串日期不包含时间时,格式化程序会假定它是午夜,并且您也没有指定时区,因此它将采用当前时区。日期以UTC(零)时区打印。这是打印的问题,而不是日期的问题。假设是MM不是MM。你是否制作了一个可以计算新年前时间的应用程序?还有,为什么是Swift 3.0?现在每个人都使用Swift 4.0。@kelin每个人都使用Swift 4.0
-我不这么认为。有统计数据吗?@AdityaSrivastava,这里是:时区(secondsFromGTM:0)
比使用字符串要好得多。
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
}