分享

Java基础:Java操作日期的工具类总结

 pengx 2009-01-16
总结一些常用到的函数可以直接在你的应用程序中调用就可以了!方便。我在网上找了些有的用不了。

   /**  
    *   以指定的格式来格式化日期       
    *   @param   date   Date  
    *   @param   format   String  
    *   @return   String  
    */  
  public   String   formatDateByFormat(java.util.Date   date,String   format)  
  {  
          String   result   =   "";  
          if(date   !=   null)  
          {  
                  try  
                  {  
                          SimpleDateFormat   sdf   =   new   SimpleDateFormat(format);  
                          result   =   sdf.format(date);  
                  }  
                  catch(Exception   ex)  
                  {  
                          ex.printStackTrace();  
                  }  
          }  
          return   result;  
  }
    /** 
     *   常用的格式化日期 
     * 
     *   @param   date   Date 
     *   @return   String 
     */ 
   public   String   formatDate(java.util.Date   date) 
   { 
           return   formatDateByFormat(date,"yyyy-MM-dd"); 
   }

    直接在主方法中调用这个方法就可以生成我们所想要的日期格式了哦!方便使用的!

    java.util 类 Calendar好像这个类的功能相当地强大,我查了一下JDK参考文档摘录如下重要信息:

    Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化:

    Calendar rightNow = Calendar.getInstance();//类方法

    可以通过调用 set 方法来设置日历字段值。在需要计算时间值(距历元所经过的毫秒)或日历字段值之前,不会解释 Calendar 中的所有字段值设置。调用 get、getTimeInMillis、getTime、add 和 roll 涉及此类计算。

    会了这个方法之后的方法如下:

       /** 
        *   返回年份 
        *   
        *   @param   date 
        *                         日期 
        *   @return   返回年份 
        */ 
      public   static   int   getYear(java.util.Date   date)   { 
      java.util.Calendar   c   =   java.util.Calendar.getInstance(); 
      c.setTime(date); 
      return   c.get(java.util.Calendar.YEAR); 
      }  
赋值一个java.util.Date  对象给它当参数就可以得到当前的年份了。
/** 
        *   返回月份 
        *   
        *   @param   date 
        *                         日期 
        *   @return   返回月份 
        */ 
      public   static   int   getMonth(java.util.Date   date)   { 
      java.util.Calendar   c   =   java.util.Calendar.getInstance(); 
      c.setTime(date); 
      return   c.get(java.util.Calendar.MONTH)   +   1; 
      }  
得到1月份为1哦。因为我加了1哈哈。
/** 
        *   返回日份 
        *   
        *   @param   date 
        *                         日期 
        *   @return   返回日份 
        */ 
      public   static   int   getDay(java.util.Date   date)   { 
      java.util.Calendar   c   =   java.util.Calendar.getInstance(); 
      c.setTime(date); 
      return   c.get(java.util.Calendar.DAY_OF_MONTH); 
      } 
可以返回是几号出来了哦!
/**  
    *   返回小时  
    *    
    *   @param   date  
    *                         日期  
    *   @return   返回小时  
    */  
  public   static   int   getHour(java.util.Date   date)   {  
  java.util.Calendar   c   =   java.util.Calendar.getInstance();  
  c.setTime(date);  
  return   c.get(java.util.Calendar.HOUR_OF_DAY);  
  }  
   
  /**  
    *   返回分钟  
    *    
    *   @param   date  
    *                         日期  
    *   @return   返回分钟  
    */  
  public   static   int   getMinute(java.util.Date   date)   {  
  java.util.Calendar   c   =   java.util.Calendar.getInstance();  
  c.setTime(date);  
  return   c.get(java.util.Calendar.MINUTE);  
  }  
   
  /**  
    *   返回秒钟  
    *    
    *   @param   date  
    *                         日期  
    *   @return   返回秒钟  
    */  
  public   static   int   getSecond(java.util.Date   date)   {  
  java.util.Calendar   c   =   java.util.Calendar.getInstance();  
  c.setTime(date);  
  return   c.get(java.util.Calendar.SECOND);  
  }

    DAY_OF_WEEK_IN_MONTH get 和 set 的字段数字,指示当前月中的第几个星期。

    可以指定今天是当前月的第几个星期哦!

    我试了一下今天是当前月的第2周哈哈正确!

    DAY_OF_WEEK get 和 set 的字段数字,指示一个星期中的某天。

    我相信这个属性会对我有帮助的哦!

public   static   int   getDay(java.util.Date   date)   { 
      java.util.Calendar   c   =   java.util.Calendar.getInstance(); 
      c.setTime(date); 
      return   c.get(java.util.Calendar.DAY_OF_WEEK);  
      } 

    我直接调用这个方法可以得到  今天是周三  返回的是4   因为是周日是从1开始的哦!

    OK,我现在想了解一下  当你输入:2008年5月第一周是从哪号到哪号的
OK,现在来分析一下当用户输入2008年5月份第一周是从几号到几号的问题了!

    第一步:得到今天是哪年哪月哪号哪周都没有问题了。

    第二步:确定2008年5月份的一号是周几?

    WEEK_OF_YEAR get 和 set 的字段数字,指示当前年中的星期数。

    可以确定今天是这一年中的第几周哦哈哈。太强大了这个类

Calendar cal = Calendar.getInstance();
int month=cal.getActualMaximum(Calendar.DAY_OF_MONTH);

    此方法可以得到当前月份的天数哦。非常地好用  而且我在润年与平年的时候进行比较处理了发现能够准确得到天数哦!

     //获得周一的日期  
       public static String getMonday(Date date){  
       Calendar c = Calendar.getInstance();  
        c.setTime(date);  
        c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);  
        return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());  
      }

    这个方法可以得到当前月份的周一的日

    OK!刚刚在网上找了一份非常不错的代码现在整理如下:

/**下面的方法可以通过一个字符串构造出来一个Date类型的数据出来!*/
public static Date strToDateLong(String strDate) {
       SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
       ParsePosition pos = new ParsePosition(0);
       Date strtodate = formatter.parse(strDate, pos);
       return strtodate;
    }
/**既然能够构造出来指定日期的时间变量那现在来分析一下指定某天与当天的时间差吧!*/
/**
* 得到二个日期间的间隔天数
*/
    public static String getTwoDay(String sj1, String sj2) {
       SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
       long day = 0;
       try {
         java.util.Date date = myFormatter.parse(sj1);
         java.util.Date mydate = myFormatter.parse(sj2);
         day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
        } catch (Exception e) {
         return "";
      }
        return day + "";
     }

    我在代码中实现了可以发现结果是正确 的哦!

    而且是能够判断出来润年与否的哦。方便得多了哦!

    OK!

/**通过这样子我们可以构造出来一个类似这种字符串类型的时间出来的哦!*/
    public static Date strToDate(String strDate) {
       SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
       ParsePosition pos = new ParsePosition(0);
       Date strtodate = formatter.parse(strDate, pos);
       return strtodate;
     }
   
      /**
       * 获得一个日期所在的周的星期几的日期,如要找出2002年2月3日所在周的星期一是几号
       *
       * @param sdate  所确定的日期形式2009-01-01
       * @param num    要确定的是周几(1表示周一2表示周二)
       * @return
       */
      public static String getWeek(String sdate, String num) {
       // 再转换为时间
       Date dd = VeDate.strToDate(sdate);
       Calendar c = Calendar.getInstance();
       c.setTime(dd);
       if (num.equals("1")) // 返回星期一所在的日期
       c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
       else if (num.equals("2")) // 返回星期二所在的日期
        c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
       else if (num.equals("3")) // 返回星期三所在的日期
        c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
       else if (num.equals("4")) // 返回星期四所在的日期
        c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
       else if (num.equals("5")) // 返回星期五所在的日期
        c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
       else if (num.equals("6")) // 返回星期六所在的日期
        c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
       else if (num.equals("0")) // 返回星期日所在的日期
       c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
       return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
      }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约