java日期计算和比较

Java 语言的Calendar,GregorianCalendar (日历),Date(日期), 和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分. 日期是商业逻辑计算一个关键的部分. 所有的开发者都应该能够计算未来的日期, 定制日期的显示格式, 并将文本数据解析成日期对象。学习日期, 日期格式, 日期的解析和日期的计算。

  Calendar 与 Date 的转换非常简单:  
//实例化一个Calendar对象  
Calendar calendar = Calendar.getInstance();  
// 从一个 Calendar 对象中获取 Date 对象  
Date date = calendar.getTime();  
// 将 Date 对象反应到一个 Calendar 对象中,  
// Calendar/GregorianCalendar 没有构造函数可以接受 Date 对象  
// 所以我们必需先获得一个实例,然后设置 Date 对象  
calendar.setTime(date);  
Calendar 对象在使用时,有一些值得注意的事项:  
  
1. Calendar 的 set() 方法  
set(int field, int value) - 是用来设置"年/月/日/小时/分钟/秒/微秒"等值  
field 的定义在 Calendar 中set(int year, int month, int day, int hour, int minute, int second)  
但没有set(int year, int month, int day, int hour, int minute, int second, int millisecond)   
前面 set(int,int,int,int,int,int) 方法不会自动将 MilliSecond 清为 0。  
  
另外,月份的起始值为0而不是1,所以要设置八月时,我们用7而不是8。  
calendar.set(Calendar.MONTH, 7);  
下面列举一些实例:

<span style="font-size:18px;">   // 创建 Calendar 对象    
    Calendar calendar = Calendar.getInstance();    
    // 初始化 Calendar 对象,但并不必要,除非需要重置时间    
    calendar.setTime(new Date());    
    
    // 显示年份    
    int year = calendar.get(Calendar.YEAR);    
    System.out.println("YEAR is = " + String.valueOf(year));    
    
    // 显示月份 (从0开始, 实际显示要加一)    
    int MONTH = calendar.get(Calendar.MONTH);    
    System.out.println("MONTH is = " + (MONTH + 1));    
    
    // 今年的第 N 天    
    int DAY_OF_YEAR = calendar.get(Calendar.DAY_OF_YEAR);    
    System.out.println("DAY_OF_YEAR is = " + DAY_OF_YEAR);    
    
    // 本月第 N 天    
    int DAY_OF_MONTH = calendar.get(Calendar.DAY_OF_MONTH);    
    System.out.println("DAY_OF_MONTH = " + String.valueOf(DAY_OF_MONTH));    
    
    // 3小时以后    
    calendar.add(Calendar.HOUR_OF_DAY, 3);    
    int HOUR_OF_DAY = calendar.get(Calendar.HOUR_OF_DAY);    
    System.out.println("HOUR_OF_DAY + 3 = " + HOUR_OF_DAY);    
    
    // 当前分钟数    
    int MINUTE = calendar.get(Calendar.MINUTE);    
    System.out.println("MINUTE = " + MINUTE);    
    
    // 15 分钟以后    
    calendar.add(Calendar.MINUTE, 15);    
    MINUTE = calendar.get(Calendar.MINUTE);    
    System.out.println("MINUTE + 15 = " + MINUTE);    
    
    // 30分钟前    
    calendar.add(Calendar.MINUTE, -30);    
    MINUTE = calendar.get(Calendar.MINUTE);    
    System.out.println("MINUTE - 30 = " + MINUTE);    
    
    // 格式化显示    
    str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());    
    System.out.println(str);    
    
    // 重置 Calendar 显示当前时间    
    calendar.setTime(new Date());    
    str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());    
    System.out.println(str);    
    
    // 创建一个 Calendar 用于比较时间    
    Calendar calendarNew = Calendar.getInstance();    
    
    // 设定为 5 小时以前,后者大,显示 -1    
    calendarNew.add(Calendar.HOUR, -5);    
    System.out.println("时间比较:" + calendarNew.compareTo(calendar));    
    
    // 设定7小时以后,前者大,显示 1    
    calendarNew.add(Calendar.HOUR, +7);    
    System.out.println("时间比较:" + calendarNew.compareTo(calendar));    
    
    // 退回 2 小时,时间相同,显示 0    
    calendarNew.add(Calendar.HOUR, -2);    
    System.out.println("时间比较:" + calendarNew.compareTo(calendar)); </span>  
日期进行比较:

  1. <span style="font-size:18px;">/**   
  2.  * 比较两个日期之间的大小   
  3.  *    
  4.  * @param d1   
  5.  * @param d2   
  6.  * @return 前者大于后者返回true 反之false   
  7.  */    
  8. public boolean compareDate(Date d1, Date d2) {    
  9.     Calendar c1 = Calendar.getInstance();    
  10.     Calendar c2 = Calendar.getInstance();    
  11.     c1.setTime(d1);    
  12.     c2.setTime(d2);    
  13.     
  14.     int result = c1.compareTo(c2);    
  15.     if (result >= 0)    
  16.         return true;    
  17.     else    
  18.         return false;    
  19. }  </span>  



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值