JAVA时间处理

 
  1. import java.text.DateFormat;
  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Calendar;
  5. import java.util.Date;
  6. /**
  7.  * 日期操作方法
  8.  */
  9. public class DateHelper {
  10.     /**
  11.      * 转换日期格式为字符串
  12.      * 
  13.      * @param date
  14.      *            待转换日期
  15.      * @return 格式为'yyyy-MM-dd'的字符串
  16.      */
  17.     public static String toString(Date date) {
  18.         if (date == null)
  19.             return new String();
  20.         return new SimpleDateFormat("yyyy-MM-dd").format(date);
  21.     }
  22.     /**
  23.      * 获取某月的最后一天
  24.      * 
  25.      * @param date
  26.      *            输入的日期
  27.      * @return 该日期对应月份的最后一天日期
  28.      */
  29.     public static Date getLastDateOfMonth(Date date) {
  30.         Calendar cal = Calendar.getInstance();
  31.         cal.setTime(date);
  32.         cal.set(Calendar.DAY_OF_MONTH, cal
  33.                 .getActualMaximum(Calendar.DAY_OF_MONTH));
  34.         return cal.getTime();
  35.     }
  36.     /**
  37.      * 获取两个日期之间的月份差值
  38.      * 
  39.      * @param date1
  40.      *            输入的日期1
  41.      * @param date2
  42.      *            输入的日期2
  43.      * @return (日期2-日期1)月份的差值
  44.      */
  45.     public static int months(Date date1, Date date2) {
  46.         Calendar cal1 = Calendar.getInstance(), cal2 = Calendar.getInstance();
  47.         cal1.setTime(date1);
  48.         cal2.setTime(date2);
  49.         return 12 * (cal2.get(Calendar.YEAR) - cal1.get(Calendar.YEAR))
  50.                 + cal2.get(Calendar.MONTH) - cal1.get(Calendar.MONTH);
  51.     }
  52.     /**
  53.      * 获取两个日期之间的天数差值
  54.      * 
  55.      * @param date1
  56.      *            输入的日期1
  57.      * @param date2
  58.      *            输入的日期2
  59.      * @return (日期2-日期1)天数的差值
  60.      */
    1.     public static int days(Date date1, Date date2) {
    2.         Calendar cal1 = Calendar.getInstance(), cal2 = Calendar.getInstance();
    3.         cal1.setTime(date1);
    4.         cal2.setTime(date2);
    5.         int days=(int)((cal2.getTimeInMillis()-cal1.getTimeInMillis())/1000/60/60/24);
    6.         if(days==0&&date2.before(date1))
    7.         {
    8.             days=-1;
    9.         }
    10.         return days;
    11.     }
        
    /**
  61.      * 返回某天增加或删减天数后的日期
  62.      * 
  63.      * @param date
  64.      *            输入的日期
  65.      * @param days
  66.      *            需增加的天数
  67.      * @return 新日期
  68.      */
  69.     public static Date addDays(Date date, int days) {
  70.         Calendar cal = Calendar.getInstance();
  71.         cal.setTime(date);
  72.         cal.add(Calendar.DAY_OF_MONTH, days);
  73.         return cal.getTime();
  74.     }
  75.     /**
  76.      * 返回某天增加或删减月份后的日期
  77.      * 
  78.      * @param date
  79.      * @param months
  80.      * @return
  81.      */
  82.     public static Date addMonths(Date date, int months) {
  83.         Calendar cal = Calendar.getInstance();
  84.         cal.setTime(date);
  85.         cal.add(Calendar.MONTH, months);
  86.         return cal.getTime();
  87.     }
  88.     /**
  89.      * 获取对应日期的一年的最后一天
  90.      * 
  91.      * @param date
  92.      *            输入的日期
  93.      * @return 该日期所在年份的最后一天
  94.      */
  95.     public static Date getLastDayOfYear(Date date) {
  96.         Calendar cal = Calendar.getInstance();
  97.         cal.setTime(date);
  98.         cal.set(Calendar.MONTH, Calendar.DECEMBER);
  99.         cal.set(Calendar.DAY_OF_MONTH, 31);
  100.         return cal.getTime();
  101.     }
  102.     /**
  103.      * 获取下个月的第一天
  104.      * 
  105.      * @param date
  106.      *            输入的日期
  107.      * @return 该日期对应的下个月的第一天
  108.      */
  109.     public static Date getFirstDateOfNextMonth(Date date) {
  110.         Calendar cal = Calendar.getInstance();
  111.         cal.setTime(date);
  112.         cal.add(Calendar.MONTH, 1);
  113.         cal.set(Calendar.DAY_OF_MONTH, 1);
  114.         return cal.getTime();
  115.     }
  116.     /**
  117.      * 获取输入月的第一天
  118.      * 
  119.      * @param date
  120.      *            输入的日期
  121.      * @return 该日期对应的该月第一天
  122.      */
  123.     public static Date getFirstDateOfMonth(Date date) {
  124.         Calendar cal = Calendar.getInstance();
  125.         cal.setTime(date);
  126.         cal.set(Calendar.DAY_OF_MONTH, 1);
  127.         return cal.getTime();
  128.     }
  129.     public static Date getFirstDateOfMonth(int month) {
  130.         Calendar cal = Calendar.getInstance();
  131.         cal.set(Calendar.MONTH, month - 1);
  132.         cal.set(Calendar.DAY_OF_MONTH, 1);
  133.         return cal.getTime();
  134.     }
  135.     /**
  136.      * 获取对应日期的明年的最后一天
  137.      * 
  138.      * @param date
  139.      *            输入的日期
  140.      * @return 该日期下一年的最后一天
  141.      */
  142.     public static Date getLastDayOfNextYear(Date date) {
  143.         Date _date = getLastDayOfYear(date);
  144.         Calendar cal = Calendar.getInstance();
  145.         cal.setTime(_date);
  146.         cal.add(Calendar.YEAR, 1);
  147.         return cal.getTime();
  148.     }
  149.     /**
  150.      * 减一天 TODO 未完成
  151.      * 
  152.      * @return
  153.      */
  154.     public static Date removeOneDay(Date date) {
  155.         Calendar d = Calendar.getInstance();
  156.         d.setTime(date);
  157.         d.add(Calendar.DATE, -1);
  158.         return d.getTime();
  159.     }
  160.     /**
  161.      * 获取当年的第一天
  162.      * 
  163.      * @return 当年的第一天日期
  164.      */
  165.     public static Date getFirstDayOfYear() {
  166.         Calendar cal = Calendar.getInstance();
  167.         cal.set(Calendar.MONTH, Calendar.JANUARY);
  168.         cal.set(Calendar.DAY_OF_YEAR, 1);
  169.         return cal.getTime();
  170.     }
  171.     /**
  172.      * 返回后两个月的最后一天
  173.      * 
  174.      * @param date
  175.      *            操作的日期
  176.      * @return 该日期后两个月的最后一天日期
  177.      */
  178.     public static Date getNextThreeMonth(Date date) {
  179.         Calendar cal = Calendar.getInstance();
  180.         cal.setTime(date);
  181.         if (cal.get(Calendar.MONTH) >= 8)
  182.             cal.set(Calendar.MONTH, 11);
  183.         else
  184.             cal.add(Calendar.MONTH, 3);
  185.         cal.set(Calendar.DAY_OF_MONTH, 1);
  186.         cal.set(Calendar.DAY_OF_MONTH, cal
  187.                 .getActualMaximum(Calendar.DAY_OF_MONTH));
  188.         return cal.getTime();
  189.     }
  190.     /**
  191.      * 获取对应月份的最后一天
  192.      * 
  193.      * @param month
  194.      *            月份(1-12)
  195.      * @return 对应月份的最后一天
  196.      */
  197.     public static Date getLastDateOfMonth(int month) {
  198.         Calendar cal = Calendar.getInstance();
  199.         cal.set(Calendar.MONTH, month - 1);
  200.         cal.set(Calendar.DAY_OF_MONTH, 1);
  201.         cal.set(Calendar.DAY_OF_MONTH, cal
  202.                 .getActualMaximum(Calendar.DAY_OF_MONTH));
  203.         return DateHelper.getLastDateOfMonth(cal.getTime());
  204.     }
  205.     /**
  206.      * 获取对应时间的月份
  207.      * 
  208.      * @param date
  209.      *            输入时间
  210.      * @return 该时间的月份 1-12
  211.      */
  212.     public static int getMonthOfDate(Date date) {
  213.         Calendar cal = Calendar.getInstance();
  214.         cal.setTime(date);
  215.         return cal.get(Calendar.MONTH) + 1;
  216.     }
  217.     /**
  218.      * 获取对应时间的日期
  219.      * 
  220.      * @param date
  221.      *            输入时间
  222.      * @return 日 1-(28~31)
  223.      */
  224.     public static int getDayOfDate(Date date) {
  225.         Calendar cal = Calendar.getInstance();
  226.         cal.setTime(date);
  227.         return cal.get(Calendar.DAY_OF_MONTH);
  228.     }
  229.     /**
  230.      * 获取对应时间的年份
  231.      * 
  232.      * @param date
  233.      *            输入时间
  234.      * @return 年份yyyy
  235.      */
  236.     public static int getYearOfDate(Date date) {
  237.         Calendar cal = Calendar.getInstance();
  238.         cal.setTime(date);
  239.         return cal.get(Calendar.YEAR);
  240.     }
  241.     /**
  242.      * 获取两个日期间最大日期
  243.      * 
  244.      * @param date1
  245.      *            日期1
  246.      * @param date2
  247.      *            日期2
  248.      * @return 大的日期
  249.      */
  250.     public static Date getMaxDate(Date date1, Date date2) {
  251.         return date1.after(date2) ? date1 : date2;
  252.     }
  253.     /**
  254.      * 比较两个日期是否是同一天
  255.      * 
  256.      * @param date1
  257.      *            日期1
  258.      * @param date2
  259.      *            日期2
  260.      * @return
  261.      */
  262.     public static boolean equals(Date date1, Date date2) {
  263.         Calendar cal1 = Calendar.getInstance(), cal2 = Calendar.getInstance();
  264.         cal1.setTime(date1);
  265.         cal2.setTime(date2);
  266.         return (cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR))
  267.                 && (cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH))
  268.                 && (cal1.get(Calendar.DATE) == cal2.get(Calendar.DATE));
  269.     }
  270. }

 

 

 

--PS:

如何计算两个日期的天数差值?

long beginTime = beginDate.getTime();
long endTime2 = endDate.getTime();
long betweenDays = (long)((endTime - beginTime) / (1000 * 60 * 60 *24) + 0.5);
 
如何比较日期时间大小?
Date nowDate=new Date();//当前时间/r
long nowTime=nowDate.getTime;
long lastTime=userTime.longValue();//以前的时间/r
long time=nowTime-lastTime;//时间相减比较。
if(time>(long)60000)//1分钟{}
 
怎么得到一个月的天数?
java.util.Calendar date = java.util.Calendar.getInstance();
System.out.println(date.getActualMaximum(date.DAY_OF_MONTH));

你可能感兴趣的:(JAVA时间处理)