date比较

应用中至少有两个日期,你想知道它们之间的关系。例如,某个日期是否在另一个日期之前?两个日期之间相差多少天?

解决方案

对于简单的比较来说,可以使用内置的NSDate比较函数。要想知道从某个日期开始经过了多少天,需要有指向系统日历的引用和两个日期。

说明

本攻略假定你使用5.2节中设置的iPhone发布日期,并将之与今天的日期进行比较。可以通过NSDate的date函数来获得今天的日期。

首先比较iPhone发布日期是否是今天,请使用isEqualToDate:函数并将需要比较的日期作为参数传递进来,该函数返回一个布尔值:
NSDate *todaysDate = [NSDate date];

if([todaysDate isEqualToDate:iPhoneReleaseDate])
    NSLog(@"The iPhone was released today!");
else
    NSLog(@"The iPhone was released on some other date");

要想判断某个日期是否早于另一个日期,请使用earlierDate:函数并将另一个日期作为参数传递进来,该函数返回更早的那个日期:
NSDate *earlierDateIs = [todaysDate earlierDate:iPhoneReleaseDate];

还可以进行相反比较,判断哪个日期更晚:
NSDate *laterDateIs = [todaysDate laterDate:iPhoneReleaseDate];

要想获得两个日期之间相差的秒数,请使用timeIntervalSinceDate:函数并将第二个日期作为参数传递进来。你会得到一个双精度浮点数,其值为两个日期间相差的秒数。这是个名为NSTimeInterval(你会发现其他的日期方法使用了NSTimeInterval)的typedef声明。

可以通过系统日历与NSDateComponents类获得关于日期比较的更详细信息,这会以你需要的格式返回两个日期间相差的时间。因此,如果想要知道天数、小时数、分钟数、年数、月数或是其中的组合,那么可以从中受益。

首先需要获得指向用户系统日历的引用:
NSCalendar *systemCalendar = [NSCalendar currentCalendar];
接下来,通过对NSCalendar常量进行按位或运算来指定采用的时间单位:
unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit |
NSDayCalendarUnit;

注意:

位操作是处理底层二进制信息的一种方式。如你所知,计算机以一系列1和0来表示信息(比如00000011表示数字3)。位操作会比较两部分信息的二进制表示并根据比较得到结果。按位或表示如果两个信息中有一个为1,那么结果就为1。

换句话说,我想知道两个日期间相差的年数、月数与天数。表5-1列出了这里可以使用的常量。

可以通过NSCalendar的components:fromDate:toDate:options:函数来返回NSDateComponents对象,对象中的数据描述了根据指定的NSCalendar常量,计算得出的两个日期间的时间差:
NSDateComponents *dateComparisonComponents = [systemCalendar  components:unitFlags
fromDate:iPhoneReleaseDate
               toDate:todaysDate
options:NSWrapCalendarComponents];

可以访问相应的属性以获得所需的信息。例如,可以通过dateComparisonComponents.year属性获得年数。参见程序清单5-3。

时间: 2024-08-27 00:48:52

date比较的相关文章

js中获取时间new date()的用法

js中获取时间new date()的用法 获取时间:   var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.getFullYear(); //获取完整的年份(4位,1970-????) 3 myDate.getMonth(); //获取当前月份(0-11,0代表1月) 4 myDate.getDate(); //获取当前日(1-31) 5 myDate.getDay();

Linux常用命令(echo、date、ls、cd、history、cat)

一.linux常用命令有很多今天我们来总结一下常用的入门命令: 1.linux下关机命令:poweroff.init 0.halt.shutdown -h now 2.linux下重启命令:reboot.init 6.shutdown -r now 3.shutdown命令: 格式:shutdown  options TIME 其中options有以下几个: -r:执行重启 -c:取消shutdown命令 -h:执行关机 其中TIME有以下几个: now:表示现在 +m:相对时间表示法,从命令提

20.1 Shell脚本介绍;20.2 Shell脚本结构和执行;20.3 date命令用法;20.4 Shell脚本中的变量

20.1 Shell脚本介绍 1. shell是一种脚本语言 aming_linux blog.lishiming.net 2. 可以使用逻辑判断.循环等语法 3. 可以自定义函数 4. shell是系统命令的集合 5. shell脚本可以实现自动化运维,能大大增加我们的运维效率 20.2 Shell脚本结构和执行 1. 开头(首行)需要加: #!/bin/bash 2. 以#开头的行作为解释说明: 3. 脚本的名字以.sh结尾,用于区分这是一个shell脚本 4. 执行.sh脚本方法有两种:

new Date()的用法

获取时间: 1 var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.getFullYear(); //获取完整的年份(4位,1970-????) 3 myDate.getMonth(); //获取当前月份(0-11,0代表1月) 4 myDate.getDate(); //获取当前日(1-31) 5 myDate.getDay(); //获取当前星期X(0-6,0代表星期天

Date常用转换、比较

在项目开发过程中,遇到了一个需要把本年本月的充值超过1000元的用户都获取出来,但是我数据库时间存的是int类型.所以不知道where的条件语句怎么写,特此查了一下,再此总结一下,希望对需要的朋友能有所帮助. 总体思想是获取出来本月初和本月末的时间转化成int在where查询条件为之间的值. 引发出的问题:1) java获取当前系统时间 2)获取月初的月末的时间 3)时间格式转化成int 3. 时间转化用到的两个类 import java.util.Calendar; (日历) import j

Java日期时间(Date/Time)

获取当前日期和时间 在Java中容易得到当前的日期和时间.可以使用一个简单的Date对象的toString()方法,如下所示打印当前日期和时间: import java.util.Date; public class DateDemo { public static void main(String args[]) { // Instantiate a Date object Date date = new Date(); // display time and date using toStr

常用工具类(System,Runtime,Date,Calendar,Math)

一.Sy 一个java.lang包中的静态工具类. 三大字段: static PrintStream err "标准"错误输出流. static InputStream in "标准"输入流. static PrintStream out "标准"输出流. 其他常用方法: 描述系统信息: 获取系统属性信息: static Properties getProperties(): (Properties是Hashtable的子类,也就是Map 的子类

Oracle关于date类型数据的总结

往Oracle数据库中插入日期型数据(to_date的用法) INSERT  INTO  FLOOR  VALUES  ( to_date ( '2007-12-20 18:31:34' , 'YYYY-MM-DD HH24:MI:SS' ) ) ; 查询显示:2007-12-20 18:31:34.0 ------------------- INSERT  INTO  FLOOR  VALUES  ( to_date ( '2007-12-14 14:10' , 'YYYY-MM-DD HH2

Java基础之Date类

Date类表示特定的瞬间,精确到毫秒. 有2种方法可以创建Date对象(这里不考虑已过时的构造函数) 1.public Date()--分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒). 1 @Test 2 public void test1() { 3 Date date = new Date(); 4 System.out.println(date); 5 } Sun Oct 23 22:39:14 CST 2016 2.public Date(long date)--根

js内置对象-Date对象

Date对象: Data对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 定义: //默认初始值定义: var dataName=new Date(); /*使用关键字new;Data首字母必须大写 使dataName成为对象,同时具有初始值:当前电脑系统时间*/ //自定义初始值定义: var dataName=naw Data(2016,5,25); //或者: var dataName=new Data('May 25,2016'); Data对象中,用来处理时间和日期