iOS "Optional(1),Optional(19),Optional(2017)" 的正确日期格式
iOS correct dateFormat for "Optional(1),Optional(19),Optional(2017)"
let dateStr1 = "1:19:2017" // Type one
let dateStr2 = "1,19,2017" // Type two
let dateStr3 = "(1)(19)(2017)" // Type three
let dateStr4 = "Optional(1),Optional(19),Optional(2017)"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "mm:dd:yyyy"
let date1 = dateFormatter.date(from: dateStr1)
// ouput: Jan 19, 2017, 12:01 AM
dateFormatter.dateFormat = "mm,dd,yyyy"
let date2 = dateFormatter.date(from: dateStr2)
// ouput: Jan 19, 2017, 12:01 AM
dateFormatter.dateFormat = "(mm)(dd)(yyyy)"
let date3 = dateFormatter.date(from: dateStr3)
// ouput: Jan 19, 2017, 12:01 AM
dateFormatter.dateFormat = ? // what would be correct formatted string
let date4 = dateFormatter.date(from: dateStr4)
// ouput: nil
现在我的问题是 dateStr4
的正确日期格式是什么。我知道我可以通过从该字符串中删除 Optional
子字符串来做到这一点。但我不想那样做。我只想知道正确的格式化字符串应该是什么?
清楚地发现日期子字符串是可选的,你可以做的是在连接日期元素时,确保变量是展开的。
使用 if let {}
或 !
展开可选变量。
您正在尝试显示可选内容。 Post 您的代码,我们可以帮助您修复它。
一般来说,您会使用这样的代码:
var dateString: String
if
let month = month,
let day = day,
let year = year {
dateString = "\(day) Month \(month), \(year)"
}
else {
dateString = "One of your components is nil"
}
if let
语法称为 "optional binding"。
更好的方法是使用 DateFormatter
将您的日期自动转换为字符串。 DateFormatter
对象自动处理到不同国家日期格式的转换,这可能非常复杂。
正确的日期格式是:
dateFormater.dateFormat = "'Optional'(mm),'Optional'(dd),'Optional'(yyyy)"
输出:2017-01-18 18:01:00 +0000
let dateStr1 = "1:19:2017" // Type one
let dateStr2 = "1,19,2017" // Type two
let dateStr3 = "(1)(19)(2017)" // Type three
let dateStr4 = "Optional(1),Optional(19),Optional(2017)"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "mm:dd:yyyy"
let date1 = dateFormatter.date(from: dateStr1)
// ouput: Jan 19, 2017, 12:01 AM
dateFormatter.dateFormat = "mm,dd,yyyy"
let date2 = dateFormatter.date(from: dateStr2)
// ouput: Jan 19, 2017, 12:01 AM
dateFormatter.dateFormat = "(mm)(dd)(yyyy)"
let date3 = dateFormatter.date(from: dateStr3)
// ouput: Jan 19, 2017, 12:01 AM
dateFormatter.dateFormat = ? // what would be correct formatted string
let date4 = dateFormatter.date(from: dateStr4)
// ouput: nil
现在我的问题是 dateStr4
的正确日期格式是什么。我知道我可以通过从该字符串中删除 Optional
子字符串来做到这一点。但我不想那样做。我只想知道正确的格式化字符串应该是什么?
清楚地发现日期子字符串是可选的,你可以做的是在连接日期元素时,确保变量是展开的。
使用 if let {}
或 !
展开可选变量。
您正在尝试显示可选内容。 Post 您的代码,我们可以帮助您修复它。
一般来说,您会使用这样的代码:
var dateString: String
if
let month = month,
let day = day,
let year = year {
dateString = "\(day) Month \(month), \(year)"
}
else {
dateString = "One of your components is nil"
}
if let
语法称为 "optional binding"。
更好的方法是使用 DateFormatter
将您的日期自动转换为字符串。 DateFormatter
对象自动处理到不同国家日期格式的转换,这可能非常复杂。
正确的日期格式是:
dateFormater.dateFormat = "'Optional'(mm),'Optional'(dd),'Optional'(yyyy)"
输出:2017-01-18 18:01:00 +0000