我是swift编程的新手,我还没能成功地找到用年、月、日来区分两个日期的代码。我尝试了下面的代码,但没有成功
let form = NSDateComponentsFormatter()
form.maximumUnitCount = 2
form.unitsStyle = .Full
let s = form.stringFromTimeInterval( date2.timeIntervalSinceReferenceDate - date1.timeIntervalSinceReferenceDate)
输入
日期1 =“2015年3月12日”
日期2 =“2015年6月1日”
产量:x年y月z日
请指教
6条答案
按热度按时间5rgfhyps1#
我们可以在Swift 2.0中使用此函数
你可以返回任何类似于我在这个函数中返回的year的值。这将返回两个日期之间的年数。
你可以只写月,天等,以便找到两个日期之间的差异,分别在月和天。
编辑
Swift 3.0及以上版本
sc4hvdpw2#
如果您需要差值(以年、月、日为单位),则计算
NSDateComponents
,如Swift days between two NSDates或Rajan's answer。如果您需要将差异作为(本地化的)字符串呈现给用户,则使用
NSDateComponentsFormatter
,如下所示正如在注解中已经提到的,计算日期之间的纯 * 时间间隔 * 的差值不能给予正确的结果,因为关于日期的大部分信息丢失了。
Swift 3的更新:
rta7y2nd3#
在Swift 5和iOS 12中,您可以使用以下3种解决方案之一计算两个日期之间的差值(以年、月、日为单位)。
1.使用
Calendar
的dateComponents(_:from:to:)
方法Calendar
有一个名为dateComponents(_:from:to:)
的方法。dateComponents(_:from:to:)
有下列宣告:返回指定为
DateComponents
的两个日期之间的差值。下面的Playground示例显示了如何使用
dateComponents(_:from:to:)
来计算两个日期之间的差值:#2.使用
Calendar
的dateComponents(_:from:to:)
方法Calendar
有一个名为dateComponents(_:from:to:)
的方法。dateComponents(_:from:to:)
有以下声明:返回两个日期之间的差值。
下面的Playground示例显示了如何使用
dateComponents(_:from:to:)
来计算两个日期之间的差值:3.使用
DateComponentsFormatter
的string(from:to:)
方法DateComponentsFormatter
有一个名为string(from:to:)
的方法。string(from:to:)
有以下声明:返回基于两个日期之间的时间差的带格式字符串。
下面的Playground示例显示了如何使用
string(from:to:)
来计算两个日期之间的差值:cwxwcias4#
试试这个
通过这个,你可以得到年两个日期之间的差异
webghufk5#
为什么不使用inbuild方法来求出两个日期之间的秒差,然后编写一个方法来将秒转换为年、月和日。
vsmadaxz6#