利用NSCalendar类实现日期的比较

在项目中日期的显示经常会当天的显示时分,当月的显示日时和分,以此类推,难免会涉及到日期的比较,下面介绍一下日期比较的两种方法

比较日期有两种方法

一种是通过系统的NSCalendar类实现

NSString * date = @"2016-10-12 13:12:12";

//创建日期格式

NSDateFormatter * dateFormat = [[NSDateFormatter alloc]init];

[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];

[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];

//字符串转为日期

NSDate *showDate =[dateFormat dateFromString:date];

//创建日历类

NSCalendar * calendar = [NSCalendar currentCalendar];

//比较现在的时间和

NSDateComponents * components =  [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:showDate toDate:[NSDate date] options:NSCalendarWrapComponents];

if (components.year) {

NSLog(@"同一年");

}else{

if (components.month) {

NSLog(@"同一月");

}else{

NSLog(@"不同月");

}

}

另一种方法是:

利用时间的实例方法timeIntervalSinceDate:就会得出两个时间相差的秒数,再计算相差的天数

    NSString * date = @"2016-10-13 9:04:00";
    //创建日期格式
    NSDateFormatter * dateFormat = [[NSDateFormatter alloc]init];
    [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    [dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
    //字符串转为日期
    NSDate *showDate =[dateFormat dateFromString:date];

    NSDate * nowDate = [NSDate date];
   NSTimeInterval timeInterval = [nowDate timeIntervalSinceDate:showDate];

    NSLog(@"分差=%f",timeInterval/60.00);//分差
    NSLog(@"时差=%f",timeInterval/3600.00);//时差
    NSLog(@"天数差=%f",timeInterval/3600.00/24);//天数差,如果是0说明是当天,否则不是当天
时间: 2024-11-13 03:39:40

利用NSCalendar类实现日期的比较的相关文章

时间类和日期类派生出时间日期类

今天再写一个多重继承的应用实例,时间类和日期类派生出时间日期类 程序代码 #include <iostream> using namespace std; class Date//日期类 { public: //构造函数 Date(int y = 0, int m = 0, int d = 0); //设置日期 void SetDate(int y,int m,int d); //打印日期 void PrintDate() { cout<<year<<"年&q

Spring利用propertyConfigurer类 读取.property数据库配置文件

1.Spring的框架中,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer类可以将.properties(key/value形式)文件中 一些动态设定的值(value),在XML中替换为占位该键($key$)的值, .properties文件可以根据客户需求,自定义一些相关的参数,这样的设计可提供程序的灵活性. 2.在Spring中,使用PropertyPlaceholderConfigurer可以在XM

利用RandomAccessFile类在指定文件指定位置插入内容

package File; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.RandomAccessFile; /*利用RandomAccessFile类在指定文件指定位置插入内容.*/ public class InsertContent { public static void ins

【Java】利用Collections类下的shuffle洗牌方法改进在一定的范围内产生不重复的随机数

上次在<[Java]在一定的范围内产生不同的随机数>(点击打开链接)上所提到的方法,尽管已经解决了一定范围内产生不同随机数的问题,运行速度已经可以的,至少不会弄很久都弄不好,其实利用Collections类下的shuffle方法思想可以更清晰.速度更快地在一定的范围内产生不同的随机数. Collections类下的shuffle方法是可以随机打乱一个数组中的元素的程序,也叫做洗牌方法. 有这个方法,配合我在<[Java]Java中的Collections类--Java中升级版的数据结构&

php利用PHPExcel类导出导入Excel用法

PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考(PHPExcel自己百度下载这里不介绍了). 导出Excel用法 //设置环境变量(新增PHPExcel) 1 set_include_path('.'. PATH_SEPARATOR . Yii::app()->basePath.'/lib/PHPExcel' . PATH_SEPARATOR . 2 3 get_include_p

使用友元类处理日期和时间

#include <iostream> using namespace std; class Date; //对Date类的提前引用声明 class Time { public: Time(int,int,int); void add_a_second(Date &); //增加1秒,1秒后可能会到了下一天,乃到下一月.下一年 void display(Date &); //显示时间,格式:月/日/年 时:分:秒 private: int hour; int minute; i

php利用smtp类轻松的发送电子邮件

转自:http://www.daixiaorui.com/read/16.html 当你还在纠结php内置的mail()函数不能发送邮件时,那么你现在很幸运,此时的这篇文章可以帮助到你! php利用smtp类来发邮件真是屡试不爽,我用过很久了,基本上没出过问题.本博客后台,当博主回复留言时候,会自动给网友发一封有新回复提示的邮件也是用的本文这个方法实现的. smtp类发送邮件的方法其实很简单,也很稳定,类是别人已经写好的了,你只需要调用就行了.几行简单的配置就能发邮件,是不是很期待的试一试呢!

利用JavaScriptSerializer类 进行Json对象的序列化和反序列化和过滤

项目下载:JavaScriptSerializer_对JSON对象序列化与反序列化及过滤器 利用<JavascriptSerializer类> 进行Json对象的序列化和反序列化 1. 首先, JavascriptSerializer类所在名空间: using System.Web.Script.Serialization; 2. 相关的3篇文章, 标记下: 使用JavaScriptSerializer进行JSON序列化 注意:    是复杂对象. JSON是Javascript中常用的数据格

js把String类转换为日期类并计算

//计算日期加法 function DateAdd(interval, number, date) { switch (interval) { case "y": { date.setFullYear(date.getFullYear() + number); return date; break; } case "q": { date.setMonth(date.getMonth() + number * 3); return date; break; } cas