当我在iPhone6上运行应用程序时,我遇到了一个恼人的错误 我需要将一小时(由datePicker选取)从12h转换为24h格式 简单的事!是的,我非常确定,但......我的代码在模拟器上工作但在设备上没有 代码如下:
func convertTimeTo24HoursFomratString() -> String {
let dateFormatter = NSDateFormatter()
// isFormatTime24Hours is a static function that returns me if the device has a 24h clock or not. It works fine both on device and on simulator
//if NSDateUtility.isFormatTime24Hours() {
// dateFormatter.dateFormat = "h:mm a"
// return dateFormatter.stringFromDate(self)
//}
dateFormatter.dateFormat = "HH:mm"
return dateFormatter.stringFromDate(self)
}
我在哪里做错了?
iOS版本到处都是9.1
提前感谢您的回答!
[保罗问题后的编辑]
在模拟器上,它返回24小时格式化日期(右)
在设备上它返回12h格式化日期(错误)。
答案 0 :(得分:9)
QA1480:将自己设置为格式化程序的en_US_POSIX
区域设置。否则,您设备的区域设置将影响日期模式。
答案 1 :(得分:2)
Apple的开发人员库中有一个可能与您的案例有关的示例。
时间的表示可能是13:00。但是,在iOS中,如果用户将24小时时间切换为关闭,则时间可能是下午1:00。
我建议避免提供自定义格式。如果可能,请尝试使用dateStyle
和timeStyle
。这将确保所有用户的适应性。
答案 2 :(得分:-1)
试试这个
lazy var dateFormatter: NSDateFormatter = {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH mm"
return dateFormatter
}()
比U可以像这样调用函数
let dateYour = YourTextField.text
date = dateFormatter.dateFromString(dateYour!)!
或
var date : NSDate
let dateYour2 = dateFormatter.stringFromDate(date)
无论如何,因为IOS9 U可以传递nil以便使用国际格式
var time = time.descriptionWithLocale(nil)
print(time) // 2015-10-30 14:12:18 +0100
答案 3 :(得分:-3)
let date = NSDate() // 31 Oct 2015 14:04
let formater = NSDateFormatter.init()
formater.setLocalizedDateFormatFromTemplate("HH:mm")
formater.stringFromDate(date) // 14:04
formater.setLocalizedDateFormatFromTemplate("hh:mm")
formater.stringFromDate(date) // 2:12 PM
formater.dateFormat = "HH:mm"
formater.stringFromDate(date) // 14:04
formater.dateFormat = "hh:mm"
formater.stringFromDate(date) // 02:04
在模拟器上检查,在设备上检查......所以,很难说...