日期格式化程序不工作
Date Formatter is not working
我有这个字符串
let myDate = "2018 年 1 月 10 日 06:31:01 下午"
我想把它转换成两个字符串
日期(dd)
年月(MMM yyyy)
为此,我正在使用此代码
let timeFormatter = DateFormatter()
//first converting string into date
timeFormatter.dateFormat = "dd MM yyyy hh:mm:ss a"
let date = timeFormatter.date(from: myDate)
// date into string
let str = timeFormatter.string(from: date!)
print(str )
// know changing resultant string into desire format
timeFormatter.dateFormat = "dd"
let strdate = timeFormatter.date(from: str)
timeFormatter.dateFormat = "MMM yyyy"
let fullDate = timeFormatter.date(from: str)
cell.lblFullDate.text = "\(String(describing: strdate))"
cell.lblDate.text = "\(String(describing: fullDate))"
当我 运行 它时,编译器卡在这一行
let date = timeFormatter.date(from: myDate)
因为这个日期格式不正确
timeFormatter.dateFormat = "dd MM yyyy hh:mm:ss a"
为此我应该使用什么 DateFormatter?
你可以试试这个
guard let timeString = single["earndate"] as? String else { return }
let timeFormatter = DateFormatter()
timeFormatter.dateFormat = "dd MM yyyy hh:mm:ss a"
let date = timeFormatter.date(from: timeString)
let str = timeFormatter.string(from: date!)
print(str)
timeFormatter.dateFormat = "dd"
let strdate = timeFormatter.date(from: str)
timeFormatter.dateFormat = "MMM yyyy"
let fullDate = timeFormatter.date(from: str)
cell.lblFullDate.text = "\(String(describing: strdate))"
cell.lblDate.text = "\(String(describing: fullDate))"
如果遇到错误,请在分配前检查
guard let earnDate = single["earndate"] as? String else { return }
Your are try to get the two different strings from a date is completely wrong.
喜欢
let timeFormatter = DateFormatter()
timeFormatter.dateFormat = "dd MMM yyyy hh:mm:ss a"
let date = timeFormatter.date(from: "10 Jan 2018 06:31:01 PM")
timeFormatter.dateFormat = "dd-MMM yyyy"
let str = timeFormatter.string(from: date!)
let finalVal = str.components(separatedBy: "-")
print(finalVal.first ?? "" )
print(finalVal.last ?? "" )
输出
由于您没有 post 收到任何错误消息,并且您编写的使用 DateFormatter 将字符串转换为日期的代码是正确的,我建议您检查 (single["earndate"] as? String)
。
这可能会返回 nil
,并让您的编译器获得 "stuck"。
你可以使用 guard 语句:
guard let earnDate = single["earndate"] as? String else { return }
var date = "";
if earnDate {
date = timeFormatter.date(from: earnDate)
}
尝试
timeFormatter.dateFormat = "DD"
let strdate = timeFormatter.string(from: date!)
timeFormatter.dateFormat = "MMM yyyy"
let fullDate = timeFormatter.string(from: date!)
输出
你的代码乱七八糟,到处都是String
s和Date
s,你应该一步一步地重新开始。
- 使用适当的格式化程序将日期解析为
date
变量
- 根据不同的格式(使用不同的格式化程序或更改现有格式)从
date
创建字符串表示形式
- 使用另一种格式再次执行第 2 步,以获得第二个输出
特别是 str
应该完全删除。
我有这个字符串
let myDate = "2018 年 1 月 10 日 06:31:01 下午"
我想把它转换成两个字符串
日期(dd)
年月(MMM yyyy)
为此,我正在使用此代码
let timeFormatter = DateFormatter()
//first converting string into date
timeFormatter.dateFormat = "dd MM yyyy hh:mm:ss a"
let date = timeFormatter.date(from: myDate)
// date into string
let str = timeFormatter.string(from: date!)
print(str )
// know changing resultant string into desire format
timeFormatter.dateFormat = "dd"
let strdate = timeFormatter.date(from: str)
timeFormatter.dateFormat = "MMM yyyy"
let fullDate = timeFormatter.date(from: str)
cell.lblFullDate.text = "\(String(describing: strdate))"
cell.lblDate.text = "\(String(describing: fullDate))"
当我 运行 它时,编译器卡在这一行
let date = timeFormatter.date(from: myDate)
因为这个日期格式不正确
timeFormatter.dateFormat = "dd MM yyyy hh:mm:ss a"
为此我应该使用什么 DateFormatter?
你可以试试这个
guard let timeString = single["earndate"] as? String else { return }
let timeFormatter = DateFormatter()
timeFormatter.dateFormat = "dd MM yyyy hh:mm:ss a"
let date = timeFormatter.date(from: timeString)
let str = timeFormatter.string(from: date!)
print(str)
timeFormatter.dateFormat = "dd"
let strdate = timeFormatter.date(from: str)
timeFormatter.dateFormat = "MMM yyyy"
let fullDate = timeFormatter.date(from: str)
cell.lblFullDate.text = "\(String(describing: strdate))"
cell.lblDate.text = "\(String(describing: fullDate))"
如果遇到错误,请在分配前检查
guard let earnDate = single["earndate"] as? String else { return }
Your are try to get the two different strings from a date is completely wrong.
喜欢
let timeFormatter = DateFormatter()
timeFormatter.dateFormat = "dd MMM yyyy hh:mm:ss a"
let date = timeFormatter.date(from: "10 Jan 2018 06:31:01 PM")
timeFormatter.dateFormat = "dd-MMM yyyy"
let str = timeFormatter.string(from: date!)
let finalVal = str.components(separatedBy: "-")
print(finalVal.first ?? "" )
print(finalVal.last ?? "" )
输出
由于您没有 post 收到任何错误消息,并且您编写的使用 DateFormatter 将字符串转换为日期的代码是正确的,我建议您检查 (single["earndate"] as? String)
。
这可能会返回 nil
,并让您的编译器获得 "stuck"。
你可以使用 guard 语句:
guard let earnDate = single["earndate"] as? String else { return }
var date = "";
if earnDate {
date = timeFormatter.date(from: earnDate)
}
尝试
timeFormatter.dateFormat = "DD"
let strdate = timeFormatter.string(from: date!)
timeFormatter.dateFormat = "MMM yyyy"
let fullDate = timeFormatter.string(from: date!)
输出
你的代码乱七八糟,到处都是String
s和Date
s,你应该一步一步地重新开始。
- 使用适当的格式化程序将日期解析为
date
变量 - 根据不同的格式(使用不同的格式化程序或更改现有格式)从
date
创建字符串表示形式 - 使用另一种格式再次执行第 2 步,以获得第二个输出
特别是 str
应该完全删除。