如何在 Objective-C 中比较两个日期
我有两个日期:2009-05-11
和当前日期。 我想检查给定的日期是否是当前日期。 这怎么可能。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我有两个日期:2009-05-11
和当前日期。 我想检查给定的日期是否是当前日期。 这怎么可能。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(14)
Cocoa 为此提供了几种方法:
在 NSDate 中
,当您使用
- (NSComparisonResult)compare:(NSDate *)anotherDate
时,您将返回其中一个:例如:
Cocoa has couple of methods for this:
in NSDate
When you use
- (NSComparisonResult)compare:(NSDate *)anotherDate
,you get back one of these:example:
在这里,伙计。 此函数会将您的日期与任何特定日期进行匹配,并能够判断它们是否匹配。 您还可以修改组件以满足您的要求。
问候,
纳维德·巴特
Here buddy. This function will match your date with any specific date and will be able to tell whether they match or not. You can also modify the components to match your requirements.
Regards,
Naveed Butt
您还可以使用其他方法来比较 NSDate 对象。 每一个
方法在某些任务上会更有效。 我选择了比较方法
因为它可以满足您的大部分基本日期比较需求。
There are other ways that you may use to compare an NSDate objects. Each of the
methods will be more efficient at certain tasks. I have chosen the compare method
because it will handle most of your basic date comparison needs.
此类别提供了一种比较 NSDates 的巧妙方法:
实现:
使用简单:
This category offers a neat way to compare NSDates:
And the implementation:
Simple to use:
如果您将两个日期都设为
NSDate
,则可以使用NSDate
的compare:
方法:您可以查看文档 此处< /a>.
If you make both dates
NSDate
s you can useNSDate
'scompare:
method:You can take a look at the docs here.
通过这种方法,您还可以比较两个日期
By this method also you can compare two dates
我发现的最好方法是检查给定日期和今天之间的差异:
根据 Apple 日期和时间编程指南 [NSCalendar ordinalityOfUnit:NSDayCalendarUnit inUnit: NSEraCalendarUnit forDate :myDate] 为您提供自纪元开始以来的午夜数。
这样可以很容易地检查日期是昨天、今天还是明天。
The best way I found was to check the difference between the given date and today:
According to Listing 13 of Calendrical Calculations in Apple's Date and Time Programming Guide [NSCalendar ordinalityOfUnit:NSDayCalendarUnit inUnit: NSEraCalendarUnit forDate:myDate] gives you the number of midnights since the start of the era.
This way it's easy to check whether the date is yesterday, today, or tomorrow.
享受编码......
Enjoy coding......
在 Cocoa 中,要比较日期,请在
上使用
对象,用您需要的日期实例化。isEqualToDate
、compare
、laterDate
和earlierDate
方法之一>NSDate文档:
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDate/isEqualToDate:
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDate/earlierDate:
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDate/laterDate:
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDate/compare:
In Cocoa, to compare dates, use one of
isEqualToDate
,compare
,laterDate
, andearlierDate
methods onNSDate
objects, instantiated with the dates you need.Documentation:
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDate/isEqualToDate:
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDate/earlierDate:
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDate/laterDate:
http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDate/compare:
你真正需要的是比较两个同类的对象。
根据字符串日期 (@"2009-05-11") 创建 NSDate :
http://blog.evandavey.com/2008/ 12/how-to-convert-a-string-to-nsdate.html
如果当前日期也是字符串,则将其设为 NSDate。 如果它已经是一个 NSDate,则保留它。
What you really need is to compare two objects of the same kind.
Create an NSDate out of your string date (@"2009-05-11") :
http://blog.evandavey.com/2008/12/how-to-convert-a-string-to-nsdate.html
If the current date is a string too, make it an NSDate. If its already an NSDate, leave it.
这是 Pascal 答案的 Swift 变体:
可以用作:
Here's the Swift variant on Pascal's answer:
Which can be used as:
这是 Naveed Rafi 的答案中的函数,如果其他人正在寻找它,则将其转换为 Swift:
Here's the function from Naveed Rafi's answer converted to Swift if anyone else is looking for it:
然后使用 NSComparisonResult 来比较日期。
Then use NSComparisonResult to compare date.
..
..