Ios 如何在Swift中从字符串生成24小时时间格式

Ios 如何在Swift中从字符串生成24小时时间格式,ios,swift,Ios,Swift,我想将用户生成的字符串转换为Date数据类型。我希望时间是24小时制的 let dateFormatter = DateFormatter() let timeAsString : String = "22:30" dateFormatter.dateFormat = "HH:mm" let timeFromString = dateFormatter.date(from: timeAsString) 结果:“2000年1月1日下午10时30分” 但结果是12小时格式。如何获取22:30作为

我想将用户生成的字符串转换为
Date
数据类型。我希望时间是24小时制的

let dateFormatter = DateFormatter()
let timeAsString : String = "22:30"
dateFormatter.dateFormat = "HH:mm"

let timeFromString = dateFormatter.date(from: timeAsString)
结果:“2000年1月1日下午10时30分”


但结果是12小时格式。如何获取22:30作为日期数据类型?

您的代码绝对正确,代码中没有问题。日期格式的字符串
HH
表示24小时时间显示格式

但开发人员(应用程序)无法控制时间格式。您可以设置支持24小时时间的日期格式字符串,但如果用户已(未启用)从设备启用24小时支持,则它将显示12小时格式的时间

检查模拟器/mac系统/iPhone设备的时间格式,并将其设置为24小时显示

有关24小时时间支持,请参阅本apple文档:

时间的表示可能是13:00。但是,在iOS中,如果用户已将24小时时间切换为关闭,则时间可能为下午1:00


您的代码绝对正确,代码中没有问题。日期格式的字符串
HH
表示24小时时间显示格式

但开发人员(应用程序)无法控制时间格式。您可以设置支持24小时时间的日期格式字符串,但如果用户已(未启用)从设备启用24小时支持,则它将显示12小时格式的时间

检查模拟器/mac系统/iPhone设备的时间格式,并将其设置为24小时显示

有关24小时时间支持,请参阅本apple文档:

时间的表示可能是13:00。但是,在iOS中,如果用户已将24小时时间切换为关闭,则时间可能为下午1:00


日期没有格式,因此只能更改从日期转换的字符串

Swift 4

 let dateFormatter = DateFormatter()
 dateFormatter.dateFormat = "HH:mm"
 let newDateString = dateFormatter.string(from: yourDate)

对于不同的日期格式,您可以检查日期是否没有格式,因此只能更改从日期转换的字符串

Swift 4

 let dateFormatter = DateFormatter()
 dateFormatter.dateFormat = "HH:mm"
 let newDateString = dateFormatter.string(from: yourDate)

对于不同的日期格式,您可以检查

您真正想要实现什么?日期本身没有格式。某些代码片段/func结尾处的预期结果是什么?这是您的完整代码
,但结果是12小时格式的
-结果是
Date.description
字符串,它使用您的系统区域设置格式。如果您想以24小时格式打印,您应该使用适当的
DateFormatter
,而不仅仅是
print(timeFromString)
您真正想要实现什么?日期本身没有格式。某些代码片段/func结尾处的预期结果是什么?这是您的完整代码
,但结果是12小时格式的
-结果是
Date.description
字符串,它使用您的系统区域设置格式。如果你想用24小时格式打印出来,你应该使用合适的
DateFormatter
,而不仅仅是
print(timeFromString)
,这不是意味着“不使用DateFormatter就可以”吗?不,你应该使用
DateFormatter
,但它会根据用户的设备设置显示日期。假设我在我的设备中设置了24小时日期格式,那么根据此代码,它将显示24小时日期。现在假设您在设备中设置了12小时的日期格式,那么它将以12小时的格式显示日期。您知道是否有办法强制dateFormatter使用24小时格式,忽略用户的设置?例如,如果我从服务器收到一个字符串,它总是在24小时内。UPD:通过将locale设置为“en_US”解决了这个问题。这不是意味着“不使用DateFormatter就可以完成”吗?不,您应该使用
DateFormatter
,但它会根据用户的设备设置显示日期。假设我在我的设备中设置了24小时日期格式,那么根据此代码,它将显示24小时日期。现在假设您在设备中设置了12小时的日期格式,那么它将以12小时的格式显示日期。您知道是否有办法强制dateFormatter使用24小时格式,忽略用户的设置?例如,如果我从服务器收到一个字符串,它总是在24小时内。UPD:通过将locale设置为“en_US”解决了这个问题。我投票了,因为链接提供了我所需要的一切。我搜索了两个小时试图找到缩写词。谢谢我投了更高的票,因为链接给了我所需要的一切。我搜索了两个小时试图找到缩写词。谢谢