Swift DateFormatter 提取时间
Posted
技术标签:
【中文标题】Swift DateFormatter 提取时间【英文标题】:Swift DateFormatter Extract Time 【发布时间】:2017-11-28 18:59:37 【问题描述】:我一直在尝试返回仅包含时间的日期。我尝试了 DateFormatter,但由于某种原因总是会检索到完整的日期。
//Declare Date Formatter 1
let dateFormatter1 = DateFormatter()
dateFormatter1.dateFormat = "yyyy-MM-dd HH:mm:ss"
//Declare Date Formatter 2
let dateFormatter2 = DateFormatter()
dateFormatter2.dateFormat = "hh:mm"
//Retrieve date and set to proper date for DateFormatter
var date: Date = dateFormatter1.date(from: "2017-11-28 10:47:30")!
//Set String date to time format with dateFormatter2
let dateString = dateFormatter2.string(from: item)
//Reseting dateFormatter1 for to only use time (could be ambiguous)
dateFormatter1.dateFormat = "hh:mm"
//Set date to Date
date = dateFormatter1.date(from: dateString)!
print("String: \(dateString)")
print("Date: \(date)")
输出:
字符串:10:47
日期:2000-01-01 15:47:00 +0000 - timeIntervalSinceReferenceDate : -31565580.0
我希望日期:为 10:47 这甚至可能吗?
【问题讨论】:
您认为它对于您当前的语言环境是正确的。 +0000 表示 UTC 时间。您可以将日期属性描述与区域设置一起使用,而不是打印日期(使用 UTC 时区)。如果您打印它,您会发现您的日期是正确的date.description(with: .current)
Date
是一个时刻。它不能只有日期信息或时间信息,它总是两者都有。只有Date
的字符串表示可以省略一个。
Date
由小时、分钟、日、月、年等组件组成。不能只是时间。如果您只有时间,它将显示默认的月份、年份和日期,如果您只有日期,它将显示默认时间 00:00:00。所以不用担心。
10:47 可以是使用 dateFormatter 的字符串,但不能是日期对象。
【参考方案1】:
不,这是不可能的。变量date
的类型为Date
,其中包含完整的日期信息。当以字符串格式显示时,您可以根据需要进行转换,但在存储在 Date 类型的变量中时,它会存储完整信息。
【讨论】:
请添加一些标点符号等 - 这是一堵难以阅读的文字墙。 对不起兄弟@ADyson 没有必要道歉,我只是想改进你的答案。我已经为你改正了你其余的语法。现在更容易理解你在说什么。以上是关于Swift DateFormatter 提取时间的主要内容,如果未能解决你的问题,请参考以下文章
在swift中使用DateFormatter时发生错误[重复]
在 Swift 3.1 中使用 DateFormatter 正确构建 dateFormat 以解析时间