比较两个NSDate类型的参数相差的时间差

+(NSInteger)getDaysFrom:(NSDate *)serverDate To:(NSDate *)endDate

{

NSCalendar *gregorian = [[NSCalendar alloc]

initWithCalendarIdentifier:NSCalendarIdentifierGregorian];

[gregorian setFirstWeekday:2];

//去掉时分秒信息

NSDate *fromDate;

NSDate *toDate;

[gregorian rangeOfUnit:NSCalendarUnitDay startDate:&fromDate interval:NULL forDate:serverDate];

[gregorian rangeOfUnit:NSCalendarUnitDay startDate:&toDate interval:NULL forDate:endDate];

NSDateComponents *dayComponents = [gregorian components:NSCalendarUnitDay fromDate:fromDate toDate:toDate options:0];

return dayComponents.day;

}

//比较选择的开始时间和结束时间的大小

+(BOOL)ComparisonString:(NSString *)str1 andString:(NSString *)str2

{

// NSString *[email protected]"2015-12-31 01:01:01";//传入时间

//1.获得时间

NSDate *senddate = [ NSDate date ];

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

[dateformatter setDateFormat : @"yyyy-MM-dd" ];

NSString *locationString = [dateformatter stringFromDate :senddate];

str2 = locationString;

NSArray *arrya1 = [str1 componentsSeparatedByString:@" " ];

str1 = arrya1.firstObject;

arrya1  = [str2 componentsSeparatedByString:@" " ];

str2 = arrya1.firstObject;

NSString *dateStr = [ NSString stringWithFormat:@"%@ 00:00:01",str1];

//传入时间

//将传入时间转化成需要的格式

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

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

NSDate *fromdate = [format dateFromString:dateStr];

NSTimeZone *fromzone = [ NSTimeZone systemTimeZone ];

NSInteger frominterval = [fromzone secondsFromGMTForDate: fromdate];

NSDate *fromDate = [fromdate  dateByAddingTimeInterval: frominterval];

NSLog(@"调的时间=%@",fromDate);

NSString *dateStr1 = [ NSString stringWithFormat : @"%@ 23:59:59",str2];

//传入时间

//将传入时间转化成需要的格式

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

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

NSDate *fromdate1 = [format1 dateFromString : dateStr1];

NSTimeZone *fromzone1 = [ NSTimeZone systemTimeZone ];

NSInteger frominterval1 = [fromzone1 secondsFromGMTForDate : fromdate1];

NSDate *fromDate1 = [fromdate1  dateByAddingTimeInterval : frominterval1];

NSLog(@"调的时间1=%@",fromDate1);

double intervalTime = [fromDate1 timeIntervalSinceReferenceDate ] - [fromDate timeIntervalSinceReferenceDate ];

long lTime = (long)intervalTime;

NSInteger iDays = lTime/60/60/24;

if (iDays <= 0 ) {

return NO;

}else{

return YES;

}

}

//感谢大神的代码,拷贝为了记录

时间: 2024-08-04 10:16:47

比较两个NSDate类型的参数相差的时间差的相关文章

java动态获取WebService的两种方式(复杂参数类型)

java动态获取WebService的两种方式(复杂参数类型) 第一种: @Override public OrderSearchListRes searchOrderList(Order_FlightOrderSearchRequest request) { Object myAllMessage; OrderSearchListRes response = null; try { String endpoint = carGlobalSetting.getEndpoint(); JaxWsD

基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------&gt; 可以返回派生类对象的引用或指针

您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. 百度和网页 http://bbs.csdn.net/topics/380238133 的作者无关,不对其内容负责.百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面. 首页 精选版块 移动开发 iOS Android Qt WP 云计算 IaaS Pass/SaaS 分布式计算/Hadoop J

java mybatis 框架下多种类型的参数传入到xml问题

由于公司要求,最近从.net向java 转,然后过程中遇到各种奇葩问题,特在此随记一番. 场景:一个方法中有两个参数,一个List的集合,一个int 类型的参数,最初我在xml的sql参数,无论定义成List还是int都报错,其实仔细一想就能明白,接口方法中定义了两个类型的参数,所以你XML中的参数类型无论定义成什么都是不对的. 原始写法: //========================这个例子是原始错误写法的例子===========Start void batchUpdateUrget

C++模板编程 - 第四章 非类型模板参数

一个例子是 1 template<typename T, int MAXSIZE> 2 class Stack {}; 在这里我就想起了C语言是怎么弄数据结构的,不得不说模板是很方便的东西.上面的例子是一个类模板,函数模板其实也是类似的. 浮点数和类对象是不允许作为非类型模板参数的. 对上面这句话的补充:这是历史原因,C++ Templates的作者认为C++在未来可能会允许使用浮点数和类对象作为非类型模板参数. 不太好理解的是这个例子 1 template<char const * n

js函数传递参数时,如果是路径类型的参数,里边包含:&#39;\&#39;字符报错

在函数中,传递的参数中有“\”字符,js会将它默认为转义字符串,如果没有出现与他匹配的转义字符串,就会缺失,例如: 将这样的一个字符串作为一个参数:C:\Program Files (x86)\MySQL\MySQL Server 5.7\data\ 传递到函数里边的值就会被默认转化为:C:Program Files (x86)MySQLMySQL Server 5.7data 如果要实现这个参数的精确传递,就需要将字符串进行处理,一般会有两种方式: ①:将字符串里边的 ‘\’ 字符替换成 ‘/

C# 给某个方法设定执行超时时间 C#函数运行超时则终止执行(任意参数类型及参数个数通用版)

在某些情况下(例如通过网络访问数据),常常不希望程序卡住而占用太多时间以至于造成界面假死. 在这时.我们可以通过Thread.Thread + Invoke(UI)或者是 delegate.BeginInvoke 来避免界面假死, 但是这样做时,某些代码或者是某个方法的执行超时的时间还是无法操控的.那么我们又是否有一种比较通用的方法.来设定某一个方法的执行超时的时间,让该其一旦超过指定时间则跳出指定方法.进而继续向下执行呢? 答案当然是肯定的. delegate.BeginInvoke可以实现代

socket编程之二:两种链接类型upd和upd

前面一篇文章说到了一些计算机网络的基础知识,引入了socket,从这节开始,就进入正题了. 一 概率 TCP:Transimission Control Protocol传输控制协议. UPD:User Datagram Protocol用户数据包协议. 两者都属于上一篇文章说的OSI模型中的第四层--传输层的协议. 两者相比: TCP协议面向连接,UDP协议面向非连接:(链接) TCP协议传输速度慢,UDP协议传输速度快:(速度) TCP有丢包重传机制,UDP没有:(重传) TCP协议保证数据

两个 Long 类型为什么不能直接用==比较

这要说到==和 equals 的区别了. 1. ==比较的是两个对象在内存中的地址值(栈中的内容). 2.equals 是 java.lang.Object 类的一个方法.equals 比较的是两个对象的内容(堆中的内容).java 中所有的类都默认继承于 Object,所以所有的类都有这个方法. 但是 Long 是一个对象,是对 long 的封装.我们看一下 Long 对象的源码,里面的 equals 方法是这么写的: 1 public boolean equals(Object obj) {

【C语言】编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数。

/*编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数. 例如:输入传入(0 , 5)函数返回5,传入(10 , 9)函数返回1,传入(12 , 4)函数返回4 */ #include <stdio.h> int yue(int a,int b) { int temp; int n; if (a>b) { temp=a; a=b; b=temp; } n=a; if(a==0) return b; else while(n!=0) { if( a%n==0 &&