swift - Swift dateformatter.date(from: string) 奇怪的行为
问题描述
import UIKit
let dateString="2018.03.11"
let df = DateFormatter()
df.timeZone=TimeZone(secondsFromGMT: 0)
df.dateFormat="YYYY.MM.dd"
let date=df.date(from: dateString)
print("orig dateString: \(dateString)")
print("date(from: string): \(date)")
print("converted again: \(df.string(from: date!))")
现在这段代码似乎按预期工作。输入和输出日期都相同:orig dateString: 2018.03.11
日期(来自:字符串):可选(2018-03-11 00:00:00 +0000)
再次转换:2018.03.11
但是,如果我尝试更改输入格式:
import UIKit
let dateString="11.03.2018"
let df = DateFormatter()
df.timeZone=TimeZone(secondsFromGMT: 0)
df.dateFormat="dd.MM.YYYY"
let date=df.date(from: dateString)
print("orig dateString: \(dateString)")
print("date(from: string): \(date)")
print("converted again: \(df.string(from: date!))")
我得到以下结果:
原始日期字符串:11.03.2018
日期(来自:字符串):可选(2017-12-24 00:00:00 +0000)
再次转换:24.12.2017
date(from: String) 似乎以我不理解的方式初始化日期。任何帮助表示赞赏。谢谢你。
解决方案
问题在于日期格式。
更改这些行:
df.dateFormat="YYYY.MM.dd"
df.dateFormat="dd.MM.YYYY"
对此:
df.dateFormat="yyyy.MM.dd"
df.dateFormat="dd.MM.yyyy"
推荐阅读
- mongodb - 如何从 mongo 聚合查询中的组值中过滤出空数组元素?
- java - 在 WebSphere Application Server 9 中禁用 JAX-WS 客户端的分块传输编码
- python - 在异步任务之间自由切换的正确方法是什么?
- php - 根据查询的动态列数制作 PHP 数组
- algorithm - 检测图像中投影矩形区域的最稳健方法是什么?
- web-services - Spring boot 和 Security:从 android 应用程序访问安全 URL。
- sql - PostgreSQL 过滤 JSON 列,其中包含混合的布尔值和 JSON 值
- ios - AdMob 没有出现在我的 SpriteKit 游戏中
- c# - 在标题回复中回复 SUCCESS
- python - 如何制作从大型 xlsx 文件加载 pandas DataFrame 的进度条?