当我将字符串格式化为日期时出现错误的日期
Posted
技术标签:
【中文标题】当我将字符串格式化为日期时出现错误的日期【英文标题】:Wrong Date coming when i formatting the string to date 【发布时间】:2018-10-23 07:04:46 【问题描述】:当我尝试格式化字符串到日期时,我得到了一天,但输出显示不同的日期,请任何人帮忙。
let my_date = "22-03-1995"
let dateformat = DateFormatter()
dateformat.dateFormat = "DD-MM-yyyy"
let date = dateformat.date(from: my_date)
print(date!)
text_lbl.text = "\(date!)"
我的输出是:1995-01-21 是这样的。
【问题讨论】:
DD
,大写的D
表示一年中的某一天,而不是月份的某一天。请参阅文档:unicode.org/reports/tr35/tr35-31/… 一旦修复,您可能会有“一天的差异”,这是由于 TimeZone。
@Larme 感谢您在这里的快速回复
因为这是一个Date
对象。这很正常。如果您想要自定义“日期表示 UX”,则需要使用自定义 dateFormat
指定所需格式。所以目前,使用相同的DateFormatter
,并将其dateFormat
更改为您想要的。
【参考方案1】:
你应该使用
let my_date = "22-03-1995"
let dateformat = DateFormatter()
dateformat.dateFormat = "dd-MM-yyyy"
let date = dateformat.date(from: my_date)
print(date!)
这会给你1995-03-22 00:00:00 +0000
作为结果
【讨论】:
感谢您的快速回复 let my_date = "22-03-1995" let dateformat = DateFormatter() dateformat.dateFormat = "dd-MM-yyyy" let date = dateformat.date(from: my_date ) print(date!) text_lbl.text = "(date!)" 但是还是来错了日期。 更改格式后,您会得到什么响应?【参考方案2】:func changeDateFormatFor(date : String,fromFormat : String = "dd-MM-yyyy", toFormat : String = "yyyy-MM-dd")-> String
if date == ""
return ""
dateFormatter.dateFormat = fromFormat
let date1 = dateFormatter.date(from: date)
dateFormatter.dateFormat = toFormat
let str = dateFormatter.string(from: date1!)
return str
【讨论】:
如果答案解释问题和解决方案,而不是只转储一些代码,则答案会更有帮助(对 OP 和 Q&A 的未来读者)。以上是关于当我将字符串格式化为日期时出现错误的日期的主要内容,如果未能解决你的问题,请参考以下文章