我的申请表有问题。我正在以这种格式获得约会:
"الإثنين 2015.5.5 - 16:16 مساء بتوقيت ابوظبي"
如下图所示 -
从API但我想将其转换为NSDate
英文格式。
我通过 @dfri 找到了这段代码。它从英语转换为阿拉伯语,但我不知道我的API dateFormat
。
// input date in given format (as string)
let inputDateAsString = "2016-03-09 10:33:59"
// initialize formatter and set input date format
var formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
// read input date string as NSDate instance
if let date = formatter.dateFromString(inputDateAsString) {
// set locale to "ar_DZ" and format as per your specifications
formatter.locale = NSLocale(localeIdentifier: "ar_DZ")
formatter.dateFormat = "EEEE, d, MMMM, yyyy HH:mm a"
let outputDate = formatter.stringFromDate(date)
print(outputDate) // الأربعاء, 9 مارس, 2016 10:33 ص
}
我该怎么做?
答案 0 :(得分:0)
为了便于转换,我认为最好删除其他文字 所以我过滤了字符串,只保留了所需的数字
这是我的尝试:
var dateString = "الإثنين 2015.5.5 - 16:16 مساء بتوقيت ابوظبي"
dateString = dateString.trimmingCharacters(in: CharacterSet(charactersIn: "01234567890.-:").inverted)
var formatter = DateFormatter()
formatter.dateFormat = "yyyy.MM.dd - HH:mm"
let date = formatter.date(from: dateString)
print(date)
//"May 5, 2015 at 4:16 PM"
答案 1 :(得分:0)
如果您的日期时区与用户的当前时区相同您可以使用NSDataDetector检测字符串中的日期:
let ds = "الإثنين 2015.5.5 - 16:16 مساء بتوقيت ابوظبي"
do {
if let date = try NSDataDetector(types: NSTextCheckingResult.CheckingType.date.rawValue).matches(in: ds, range: NSRange(location: 0, length: ds.utf16.count)).flatMap({$0.date}).first {
print(date.description(with: .current)) // "Wednesday, February 21, 2018 at 4:16:00 PM Brasilia Standard Time\n"
}
}