swift - Swift - 使用日期格式化程序将日期的短格式字符串转换为长格式
问题描述
我有一个看起来像这样的字符串:“2021-08-05”
我想将其转换为日期,以便将其显示为“2021 年 8 月 5 日”
我下面的代码只是返回为零,我不明白为什么。任何帮助,将不胜感激。
代码:
func stringToDate(dateString: String){
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd"
formatter.dateStyle = .long
let newDate = formatter.date(from: dateString)
print("formatter: \(newDate)")
}
我将该函数称为按钮的操作 (SwiftUI),因此单击按钮时应显示日期。
Button("Go"){
stringToDate(dateString: "2021-08-05")
}
解决方案
删除该dateStyle
行将修复它,并打印实际日期。
代码:
func stringToDate(dateString: String){
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd"
let newDate = formatter.date(from: dateString)
print("formatter: \(newDate)")
}
// Prints: formatter: Optional(2021-08-04 23:00:00 +0000)
要进行整个转换,以下功能将起作用:
func convertDate(from original: String) -> String? {
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd"
guard let date = formatter.date(from: original) else { return nil }
formatter.dateStyle = .long
let string = formatter.string(from: date)
return string
}
// Prints: Optional("August 5, 2021")
当然,由于我的位置和语言,这可能会略有不同
以下代码行只能在获得 a后运行,Date
否则您将“覆盖” dateFormat
:
formatter.dateStyle = .long
推荐阅读
- python - 在 Python 中定义用于调用 CPLEX 的目录
- keras - 如何在 keras 中保存经过训练的神经网络的偏差?
- apache-kafka - 如何使用 Kafka Streams 统计在特定时间段内生成事件的用户?
- python - Django 中的用户类型模型
- c - 在c中将文件输入读入结构数组的简单方法?
- laravel - 使用 laravel tinker 和 Carbon 批量更新数据
- css - 理解 :not 选择器 css
- python - 在 Python 中,如何在为属性赋值的类中创建方法
- python - Pandas 元数据属性未传递给 Groupby 对象的组
- json - 有没有办法使用 curl 在环回中发送非常复杂的查询?