我正在尝试使用DateFormatter()从字符串获取日期。我的手机设置为日本地区,语言设置为日语,时间设置为12小时格式。我的应用设置为24小时格式,因此用户可以24小时格式从自定义选择器中选择时间。日期字符串为“ 11 3月,2019 15:35”。日期格式为“ MMM dd,yyyy HH:mm”。但是它不起作用,总是返回nil。
根据DESIGN.md 如果我使用“ MMM dd,yyyy KK:mm”作为日期格式,则仅当字符串中的时间为12:00时才有效。这是下面的代码。
static func dateFrom(string: String, timeString: String) -> Date? {
let dateFormatter = DateFormatter()
dateFormatter.timeStyle = DateFormatter.Style.short
dateFormatter.timeZone = NSTimeZone.local
dateFormatter.locale = NSLocale.current
/// Check time format
var timeFormat = "KK:mm"
if timeString.containsIgnoringCase(find: AppConstants.am.localizedStringWith()) || timeString.containsIgnoringCase(find: AppConstants.pm.localizedStringWith()) {
timeFormat = "h:mm a"
}
/// Check date for MMDD format
dateFormatter.dateFormat = "MMM dd, yyyy \(timeFormat)"
if let date = dateFormatter.date(from: string) {
return date
}
/// Check date for DDMM format
dateFormatter.dateFormat = "dd MMM, yyyy \(timeFormat)"
if let date = dateFormatter.date(from: string) {
return date
}
return dateFormatter.date(from: string)
}
如果找到解决方案,请告诉我。
答案 0 :(得分:0)
尝试在日期格式器上设置日历:
dateFormatter.calendar = .gregorian