快速使用HH:mm时间格式的字符串获取日期不适用于日语和地区

时间:2019-03-11 10:15:42

标签: ios swift nsdateformatter

我正在尝试使用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)
}

如果找到解决方案,请告诉我。

1 个答案:

答案 0 :(得分:0)

尝试在日期格式器上设置日历:

dateFormatter.calendar = .gregorian