JAVA 求昨天、明天的算法(前两天,后三天求法)

JAVA 求昨天、明天的算法(前两天,后三天求法)

JAVA的时间类是支持指向早一天或是晚一天,这样就给我们程序开发带来了很大的方便.比如说我们要求昨天或是明天是什么日子就不在辛苦地去算二用到底是多少天,不在想月未或是月初该怎么算.一切交给JDK处理.同样的,我们要求某时间之前或之后一段时间也好算了(这个功能运用得比较广范,如比我要获取前5天的数据用于表).
下面,我们来介绍JAVA时间类
java.lang.Object
java.util.Calendar        
java.util.GregorianCalendar
java.lang.Object
      
java.util.Date  

类 Date 表示特定的瞬间,精确到毫秒。
在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
GregorianCalendar 是一种混合日历,在单一间断性的支持下同时支持儒略历和格里高利历系统,在默认情况下,它对应格里高利日历创立时的格里高利历日期(某些国家/地区是在 1582 年 10 月 15 日创立,在其他国家/地区要晚一些)。

Date 类在后来的JDK差不多已被已废弃了.所以在 Date也能实现指向早一天或是晚一天相对应的方法.

现在我们先看一段实现求前一天的代码:
        Calendar   yestoday   =    Calendar.getInstance();  
        
// cal1.set(2000,1,29);
        yestoday .add(Calendar.DATE, - 1 );
Calendar   的add(int field, int amount) 方法根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。其中field可以是 Calendar的所有日历字段.(注cal1.set(2000,1,29)设置时间时月是从0开始的)
上面一段代的 yestoday 就已经指向了昨天的现在这个时候了.

 求时间段一
般是在JAVA+数据库完成的
好比说前3天的数据吧(包括今天)
        Calendar   cal1    =    Calendar.getInstance();
        cal1.add(Calendar.DATE,
- 2 );
        
// cal1.set(2000,1,29);
        SimpleDateFormat   sdf    =     new  SimpleDateFormat( " yyyy-MM-dd " );  
        String towDaysBefore 
=  sdf.format(cal1.getTime());
        
        String today 
=  sdf.format(Calendar.getInstance().getTime());
        
        String sql 
=   " select * from  " + tableName + "  where time between ' " + towDaysBefore
                    
+ "  and  " + today;
上面的sql就是查前3天的数据(包括今天)的sql了
一般来说查一个时间段的数据是以天为基准,没必要以分秒为基准,所以要 SimpleDateFormat   一下.当然到底以什么为基准还得取决于具体需求了.

猜你喜欢

转载自liuguidong.iteye.com/blog/2253768