精华内容
下载资源
问答
  • java日期处理

    2013-07-10 09:50:18
    java日期处理
  • Java日期处理

    千次阅读 2012-08-17 18:55:30
    学习Java日期处理,看见这一篇比较详细,转载之。 转自:http://www.cnblogs.com/hqr9313/archive/2012/04/19/2458221.html 时间日期 1)java中的时间类有:Date和Calendar 2)java中时间类的本质 long(毫秒...

    学习Java日期处理,看见这一篇比较详细,转载之。

    转自:http://www.cnblogs.com/hqr9313/archive/2012/04/19/2458221.html


    时间日期
    1)java中的时间类有:DateCalendar

    2)java中时间类的本质 long(毫秒数)
      
    Date = long +历法算法(方法gerYear())
      Calendar = long +历法算法(方法ger())

    3) 时间的标准有两种
     (1970)GMT long
     (0)UTC long
    4) java中基本的时间表示GMT long
    5) java提供了Date类型表示时间和日期
     Date 是long 类型的包装
    6) Calendar 是历法的抽象
     历法:公历,农历,太阳历
    7) GregorianCalendar是历法的实现,采用公历的算法实现的
     Calendar cal = Calendar.getInstance();
     Calendar cal = new GregorianCalendar();//除了日本和泰国,效果等同于上一句
    8) Date和 Calendar的默认值就是系统当前时间

    一 java中表示时间的方式:
    1) 格林威治时间(GMT):1970年1月1日 00:00:00(注:中国是东八区,所以要+8个小时)
      也就是1970年1月1日 08:00:00
    2 )公元元年(UTC): 0年
    3 )目前java中3种日期表达方式long, Date , Calendar都在用


     1 例子
     2 import java.util.Calendar;
     3 import java.util.Date;
     4 import java.util.GregorianCalendar;
     5 
     6 public class LongDateDemo {
     7  public static void main(String[] args) {
     8   long now = System.currentTimeMillis();
     9   long year = now/1000/60/60/24/365 +1970;
    10   System.out.println(year);
    11   //一年 地球绕太阳一圈(365天+1/4天)
    12   //原点(公元元年)
    13   
    14   /* date.getYear()是将date内部的long时间,根据历法计算
    15    * 为年份,返回值是2位数年份,如:1997年返回97,但是过了
    16    * 2K年,返回3位数年份,如2012返回112
    17    */
    18   
    19   //老板本
    20   Date date = new Date();//默认是当前时间(long)
    21   int y = date.getYear()+1900;
    22   int month = date.getMonth()+1;
    23   System.out.println(y+"年"+month+"月");
    24   
    25   //新版本
    26   //Calendar 历法
    27   Calendar cal = new GregorianCalendar();//默认是当前时间(long)
    28   y = cal.get(Calendar.YEAR);//2012
    29   month = cal.get(Calendar.MONTH)+1;//4
    30   System.out.println(y+"年"+month+"月");
    31   
    32   
    33  }
    34 
    35 }

     


    二 时间类型转换  long <-> Date <-> Calendar
     long --->Date :  dat = new Date(l)
           dat.setTime(l)

     Date --->Calendar : cal.setTime(dat)

     

     Calendar ---> Date: cal.getTime()


     Date ---> long :dat.getTime()
     注:Date dat  ,  long l  ,Calendar cal

    例子


     1 import java.util.Calendar;
     2 import java.util.Date;
     3 import java.util.GregorianCalendar;
     4 
     5 /**
     6  * 时间的类型转换
     7  */
     8 public class DateCaseDemo {
     9  public static void main(String[] args) {
    10   long gmt = 0;//格林威治时间 1970/01/01
    11   
    12   Date date = new Date();
    13   date.setTime(gmt);//回到1970 元旦,相当于long -->Date
    14   System.out.println(date.getYear()+1900);//1970
    15   
    16   Calendar cal = new GregorianCalendar();
    17   //date --> cal
    18   cal.setTime(date);//将cal设置为date的时间,也是1970
    19   System.out.println(cal.get(Calendar.YEAR));//1970
    20   //date 和 cal ,gmt 代表同一时刻
    21   //加-1天,是在当前时间上加-1天,就是减少1天,就是减少1天的毫秒数(1000*60*60*24)
    22   cal.add(Calendar.DAY_OF_YEAR,-1);
    23   Date d = cal.getTime();
    24   System.out.println(d);//1969
    25   long l = d.getTime();
    26   System.out.println(l);//-86400000,因为是在原点以前的时间
    27 
    28   
    29  }
    30 
    31 }

     

    三 时间的输入与输出
    1)  日期输出的本质是将Date转换为格式化的String
    2)  日期输入的本质是将格式化的 String转换为 Date
    3)  SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
       构建SimpleDateFormat 一般提供日期的格式"yyyy-MM-dd"具体参看javadoc
        如:"yyyy-MM-dd HH:mm:ss"
         "yyyyMMdd"
         "dd/MM/yy"
         "MM/dd/yyyy"

    常用方法

     fmt.parse(String)    可以实现将(合法)字符串解析为日期类型,经常用于处理日期输入
     fmt.format(Date)     可以把日期格式化为字符串用于输出处理

    使用字符串String输出时间

     Date ---> String:
      DateFormat fmt = new SimpleDateFormat("HH:mm:ss");
      fmt.format(date)

    把字符串String时间转为Date时间(个是必须相同)

     String --> Date :
      DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
      fmt.parse("1999-2-2")
    注:java没有提供String直接转换为Calendar的API方法,但第三方提供的API有这种方法
     如果Calendar需要转为String,必须先转换为Date
     Calendar ----> Date :
      Date dat = cal.getTime();

    例子


     1 import java.text.ParseException;
     2 import java.text.SimpleDateFormat;
     3 import java.util.Date;
     4 
     5 public class DateIODemo {
     6  public static void main(String[] args) throws ParseException {
     7   Date date = new Date();//当前时间,当前毫秒数
     8   //输出yyyy-MM-dd HH:mm:ss
     9   SimpleDateFormat fmt = 
    10    new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    11   //将日期类型格式化为时间字符串
    12   String str = fmt.format(date);//日期格式化
    13   System.out.println(str);//2012-12-21 00:00:00
    14   //解析日期字符串为日期类型对象
    15   String day = "2012-12-21";
    16   SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
    17   Date d = f.parse(day);//将日期字符串解析为毫秒数
    18   long l = d.getTime();
    19   System.out.println(fmt.format(d));
    20   String s = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
    21   System.out.println(s);//2012-04-18
    22  }
    23 
    24 }
    复制代码

     

    四 时间的计算
     时间计算的问题

     1) 本质是时间毫秒数的计算

     2) 简单时间计算,直接计算毫秒数,如:3天以后,2小时等
     3) 复杂时间计算,利用Calender类提供的历法算法实现
    常用方法:
         add() set()
         Calendar 提供的方法本是上也是计算毫秒数, 


    例子
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    
    public class DateCalDemo {
     public static void main(String[] args) {
      //简单时间计算
      long l = System.currentTimeMillis();//当前时间
      l += 1000L*60*60*24*3;//3天以后
      SimpleDateFormat sdm = new SimpleDateFormat("yyyy-MM-dd");  
      String s = sdm.format(new Date(l));
      System.out.println(s);
      //复杂时间计算
      Calendar cal = new GregorianCalendar();
      cal.add(Calendar.YEAR, 2);//2年以后
      cal.set(Calendar.MONTH,Calendar.JANUARY);//设置月份为1月
      System.out.println(sdm.format(cal.getTime()));//2年以后的1月
      
     }
    }
    
    例子2
    package com.tarena.day16;
    
    import java.util.Calendar;
    import java.util.Date;
    
    public class SpecialDateDemo {
     public static void main(String[] args) {
      
     }
     /**
      * 计算商品的促销日期special Date,规则:商品过期前两周五促销 
      * @param creat
      * @param months
      * @return
      */
     public static Date special(Date creat,int months){
      Calendar cal = Calendar.getInstance();
      cal.setTime(creat); //生产日期
      cal.add(Calendar.MONTH, months);  //过期日
      cal.add(Calendar.WEEK_OF_YEAR, -2);  //回调2周
      if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){//如果是星期天
       cal.add(Calendar.WEEK_OF_YEAR, -1);//回调一周
       cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);//调到本周的周五
      }
      return cal.getTime();
     }
    
    }
    
     

    展开全文
  • java日期处理工具类

    2020-09-02 08:37:13
    主要为大家详细介绍了java日期处理工具类,其次还介绍了日期处理的基础知识,感兴趣的小伙伴们可以参考一下
  • java 日期处理工具类

    2016-06-21 13:58:10
    java 日期处理工具类
  • java日期处理大全

    2012-12-05 12:45:25
    java日期处理大全,用与时间的各种处理。。
  • 主要为大家详细介绍了Java日期处理工具类DateUtils的相关代码,包含日期和时间常用操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • java日期处理小结

    2012-12-07 09:56:42
    java日期处理 和格式解析 包含java.util.Calender java.util. GregorianCalendar java.util.Date
  • 自己整理的Java日期处理类 。包含获取两个之间段之间的天数、月初日期,月末日期、一个时间段之间的所有的日期,月份 一周的第一天,最后一天、 当前是周几等。仅供参考
  • java日期处理代码

    千次阅读 2018-01-25 09:48:18
    下面的代码封装了一系列日期处理的方法,大家看看有没有用得上的,有需要的话就拿去用吧! import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util...

     

    下面的代码封装了一系列日期处理的方法,大家看看有没有用得上的,有需要的话就拿去用吧!

    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    
    /**
     * @author vita小马哥
     * @date 2018年1月25日 上午9:24:19
     * Date日期处理工具类
     */
    public class DateUtils {
    
    	/**
    	 * 获取指定格式的日期
    	 * @param format  日期格式(如yyyy-MM-dd HH:mm:ss)
    	 * @return String格式的日期
    	 * @throws Exception
    	 */
    	public static String getFormatDate(String format){
    		SimpleDateFormat sdfDays = new SimpleDateFormat(format);
    		return sdfDays.format(new Date());
    	}
    	
    	/**
    	 * 转换日期格式
    	 * @param  date    日期
    	 * @param  format  日期格式(如yyyy-MM-dd HH:mm:ss)
    	 * @return String格式的日期
    	 * @throws Exception
    	 */
    	public static String formatDate(Date date, String format){
    		SimpleDateFormat sdfDays = new SimpleDateFormat(format);
    		return sdfDays.format(date);
    	}
    	
    	/**
         * 得到n天之后的日期
         * @param days
         * @param format
         * @return
         */
        public static String getAfterDayDate(String days,String format){
        	
        	int daysInt = Integer.parseInt(days);
        	
            Calendar canlendar = Calendar.getInstance(); // java.util包
            canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动
            Date date = canlendar.getTime();
            
            SimpleDateFormat sdfd = new SimpleDateFormat(format);
            String dateStr = sdfd.format(date);
            
            return dateStr;
        }
    
        /**
         * 比较两个日期的大小
         *
         * @param startDate 开始时间
         * @param endDate   结束时间
         * @return true : 结束时间 > 开始时间
         */
        public static boolean dateCompare(Date startDate, Date endDate) {
            boolean dateComPareFlag = true;
            if (endDate.compareTo(startDate) != 1) {
                dateComPareFlag = false;
            }
            return dateComPareFlag;
        }
        
        /**
    	* @Title: compareDate
    	* @Description: TODO(日期比较,如果s>=e 返回true 否则返回false)
    	* @param s
    	* @param e
    	* @return boolean  
    	* @throws
    	* @author luguosui
    	 */
    	public static boolean compareDate(String s, String e,String format) {
    		
    		Date sd = fomatDate(s,format);
    		Date ed = fomatDate(e,format);
    		
    		if(sd == null||ed == null){
    			return false;
    		}
    		return sd.getTime() >= ed.getTime();
    	}
    	
    	/**
    	 * 格式化日期
    	 * 
    	 * @return
    	 */
    	public static Date fomatDate(String date,String format) {
    		DateFormat fmt = new SimpleDateFormat(format);
    		try {
    			return fmt.parse(date);
    		} catch (ParseException e) {
    			e.printStackTrace();
    			return null;
    		}
    	}
    	
    	/**
         * 计算两个时间之间相差的分钟数,“结束时间”减去“开始时间”之间的分钟数.
         *
         * @param beginTime 开始时间
         * @param endTime   结束时间
         * @return int 分钟数。小于0:开始时间大于结束时间  大于0:开始时间小于结束时间
         */
        public static long calMinutes(Date beginTime, Date endTime) {
            if (beginTime == null || endTime == null) {
                return 0;
            }
            long diff = endTime.getTime() - beginTime.getTime();
            return Math.abs(diff / (60 * 1000));
        }
        
        /**
         * 计算两个日期的时间差  返回具体的天数
         *
         * @param startTime 开始时间
         * @param endTime   结束时间
         * @return int : 天数
         */
        public static int secondsBetween(Date startTime, Date endTime) {
            if (startTime == null || endTime == null) {
                return 0;
            }
            return (int) ((endTime.getTime() - startTime.getTime()) / (1000 * 60 * 60 * 24));
        }
        
        /**
         * 根据生日计算当前年龄.
         * <p>准确到天,比如:<br/>
         * 当前时间为 2008-06-17 ,生日为 1982-06-16 ,计算结果为 26<br/>
         * 当前时间为 2008-06-17 ,生日为 1982-06-17 ,计算结果为 26<br/>
         * 当前时间为 2008-06-17 ,生日为 1982-06-18 ,计算结果为 25<br/>
         * </p>
         *
         * @param birthDay 必须是一个 Date 对象,否则直接返回 0
         * @return int : 年龄
         */
        public static int getAge(Object birthDay) {
            Date aDate = null;
            if (birthDay instanceof Date) {
                aDate = (Date) birthDay;
            }
            if (aDate != null) {
                Calendar today = Calendar.getInstance();
                Calendar birthday = Calendar.getInstance();
                birthday.setTime(aDate);
                int yearTotal = today.get(Calendar.YEAR) - birthday.get(Calendar.YEAR);
                int bDay = today.get(Calendar.DAY_OF_YEAR) - birthday.get(Calendar.DAY_OF_YEAR);
                //not yet match 1 round age, minus one year
                if (bDay < 0) {
                    yearTotal = yearTotal - 1;
                }
                return yearTotal;
            }
            return 0;
        }
    
        /**
         * 根据年龄,得到的生日日期
         *
         * @param age 年龄
         * @return 生日日期
         */
        public static Date getBirthDay(int age) {
            GregorianCalendar gc = new GregorianCalendar();
            int currYear = gc.get(Calendar.YEAR);
            gc.set(Calendar.YEAR, currYear - age);
            Date birthDate = new Date(gc.getTime().getTime());//精确到天,haidong.zhou edit 2006-07-14
            return birthDate;
        }
        
        /**
         * 日期 转 字符串
         *
         * @param date   日期
         * @param patten 字符串格式
         * @return str
         */
        public static String parseToFormatDateString(Date date, String patten) {
            if (date == null || StringUtils.isBlank(patten)) {
                return "";
            }
    		SimpleDateFormat format = new SimpleDateFormat(patten);
            return format.format(date);
        }
        
        /**
         * 字符串 转 日期
         *
         * @param dateStr 日期格式字符串
         * @param dateFmt 转换格式
         * @return
         * @throws ParseException If the string and the format is not match, exception will be thrown
         */
        public static Date toUtilDate(String dateStr, String dateFmt) throws ParseException {
    		SimpleDateFormat format = new SimpleDateFormat(dateFmt);
            return format.parse(dateStr.trim());
        }
        
        /**
         * 明天日期
         *
         * @param date Date
         * @return Date
         */
        public static Date getTomorrow(Date date) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(Calendar.DATE, 1);
            return cal.getTime();
        }
        
        /**
         * 判断 date是否大于等于开始日期,小于等于结束日期
         *
         * @param date 指定某个日期
         * @param from 开始日期
         * @param to   结束日期
         * @return
         * @author: zhanghailang
         */
        public static boolean isDateInRange(Date date, Date from, Date to) {
            if ((date.after(from) && date.before(to)) || date.compareTo(from) == 0 || date.compareTo(to) == 0) {
                return true;
            }
            return false;
        }
        
        /**
         * 获取当天日期
         *
         * @return Date
         */
        public static Date getDate() {
            Calendar cal = Calendar.getInstance();
            return cal.getTime();
        }
        
        /**
         * 在日期上添加多几个月,并返回日期.
         *
         * @param date   - 日期
         * @param amount - 添加多少月
         * @return date
         */
        public static Date addMonth(Date date, int amount) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(Calendar.MONTH, amount);
            return cal.getTime();
        }
        
        /**
         * 计算两个时间之间相差的分钟数,“结束时间”减去“开始时间”之间的分钟数.
         *
         * @param beginTime 开始时间
         * @param endTime   结束时间
         * @return int 分钟数。如果开始时间或者结束时间为 null 的话,返回 0 。
         */
        public static int minutesBetween(Date beginTime, Date endTime) {
            if (beginTime == null || endTime == null) {
                return 0;
            }
            long diff = endTime.getTime() - beginTime.getTime();
            return (int) diff / (60 * 1000);
        }
        
        /**
         * 当天日期向前推多少天
         *
         * @param day
         * @return Date
         */
        public final static Date getBeforeDateTime(int day) {
            Calendar calendar = Calendar.getInstance();
            calendar.add(Calendar.DATE, -day);
            return calendar.getTime();
        }
        
        /**
         * 根据日期 得到 这周的 星期天
         *
         * @param day     日期
         * @param hmsFlag true: 时分秒为0 ,flase : 时分秒为23:59:59
         * @return Date
         */
        public final static Date getWeekDayToSunday(Date day, boolean hmsFlag) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(day);
            calendar.setFirstDayOfWeek(GregorianCalendar.MONDAY);
            calendar.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.SUNDAY);
    
            if (hmsFlag) {
                calendar.set(Calendar.HOUR_OF_DAY, 0);
                calendar.set(Calendar.MINUTE, 0);
                calendar.set(Calendar.SECOND, 0);
            } else {
                calendar.set(Calendar.HOUR_OF_DAY, 23);
                calendar.set(Calendar.MINUTE, 59);
                calendar.set(Calendar.SECOND, 59);
            }
            return calendar.getTime();
        }
        
        /**
         * 根据日期 得到 这周的 星期一
         *
         * @param day     日期
         * @param hmsFlag true: 时分秒为0 ,flase : 时分秒为23:59:59
         * @return Date
         */
        public final static Date getWeekDayToMonday(Date day, boolean hmsFlag) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(day);
            calendar.setFirstDayOfWeek(GregorianCalendar.MONDAY);
            calendar.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.MONDAY);
    
            if (hmsFlag) {
                calendar.set(Calendar.HOUR_OF_DAY, 0);
                calendar.set(Calendar.MINUTE, 0);
                calendar.set(Calendar.SECOND, 0);
            } else {
                calendar.set(Calendar.HOUR_OF_DAY, 23);
                calendar.set(Calendar.MINUTE, 59);
                calendar.set(Calendar.SECOND, 59);
            }
            return calendar.getTime();
        }
        
        /**
         * 根据日期 得到 这周的 星期天
         *
         * @param day 日期
         * @return Date
         */
        public final static Date getWeekDayToSunday(Date day) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(day);
            calendar.setFirstDayOfWeek(GregorianCalendar.MONDAY);
            calendar.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.SUNDAY);
            return calendar.getTime();
        }
    
        /**
         * 根据日期 得到 本月的第一天
         *
         * @return Date
         */
        public final static Date getMonthDayToFirstDay(Date day) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(day);
            calendar.setFirstDayOfWeek(GregorianCalendar.MONDAY);
            calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
            return calendar.getTime();
        }
        
        /**
         * 计算时间差 精确到秒
         *
         * @param beginTime 开始时间
         * @param endTime   结束时间
         * @return 秒数
         */
        public static int callSecond(Date beginTime, Date endTime) {
            long beetween = endTime.getTime() - beginTime.getTime();
            long day = beetween / (24 * 60 * 60 * 1000);
            long hour = (beetween / (60 * 60 * 1000) - (beetween / (24 * 60 * 60 * 1000)) * 24);
            long min = ((beetween / (60 * 1000)) - day * 24 * 60 - hour * 60);
            long s = (beetween / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
            //System.out.println(day + "天" + hour + "小时" + min + "分" + s + "秒");
            long d = day * 24 * 60 * 60;
            long h = hour * 60 * 60;
            long m = min * 60;
            return (int) (d + h + m + s);
        }
        
        /**
         * 当前日期添加多少分钟后的时间
         *
         * @param date   - 时间
         * @param minute - 添加多少分钟
         * @return date
         * @deprecated 请用addMinute替换
         */
        @Deprecated
        public static Date subtractMinute(Date date, int minute) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(Calendar.MINUTE, minute);
            return cal.getTime();
        }
        
        /**
         * 当前日期的年份
         *
         * @param date -日期
         * @return int:年份
         */
        public static Integer getYear(Date date) {
            if (null == date) {
                return 0;
            }
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.YEAR);
        }
        
        /**
         * 计算两个时间之间的小时数,精确到秒。
         * <p>比如:2008-07-10 17:41:01 和 2008-07-11 17:41:01 之间相差为 24 个小时。</p>
         * <p>比如:2008-07-10 17:41:01 和 2008-07-11 17:41:00 之间相差为 23 个小时。</p>
         *
         * @param startTime 开始时间
         * @param endTime   结束时间
         * @return int : 小时数
         */
        public static double compareHours(Date startTime, Date endTime) {
            if (startTime == null || endTime == null) {
                return 0;
            }
    
            long between = (endTime.getTime() - startTime.getTime()) / 1000; //秒
            long day1 = between / (24 * 3600);
            long hour1 = between % (24 * 3600) / 3600;
            long minute1 = between % 3600 / 60;
            long second1 = between % 60 / 60;
            //System.out.println(""+day1+"天"+hour1+"小时"+minute1+"分"+second1+"秒");
            double hour2 = (double) minute1 / 60;
            double v = (double) hour1 + hour2;
            java.text.DecimalFormat df = new java.text.DecimalFormat("#0.00");
            return Double.parseDouble(df.format(v));
        }
        
        /**
         * 某年某月的第一天
         *
         * @param year  int 年份
         * @param month int 月份
         */
        public static Date getFristDayOfMonth(int year, int month) {
            Calendar cal = Calendar.getInstance();
            cal.set(Calendar.YEAR, year);
            cal.set(Calendar.MONTH, month-1);
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
            cal.set(Calendar.HOUR_OF_DAY, 0);
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.SECOND, 0);
            return cal.getTime();
        }
    
        /**
         * 某年某月的最后一天
         *
         * @param year  int 年份
         * @param month int 月份
         */
        public static Date getLastDayOfMonth(int year, int month) {
            Calendar cal = Calendar.getInstance();
            cal.set(Calendar.YEAR, year);
            cal.set(Calendar.MONTH, month-1);
            cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
            cal.set(Calendar.HOUR_OF_DAY, 0);
            cal.set(Calendar.MINUTE, 0);
            cal.set(Calendar.SECOND, 0);
            return cal.getTime();
        }
    	
    }
    

     

     

     

     

     

     

     

    展开全文
  • java日期处理总结

    2010-12-26 19:17:15
    java中关于日期处理的总结,包含各种日期格式之间的转java.util.Date(已经不提倡使用,该类的方法比较少) java.util.Calendar(抽象类) java.util.GregorianCalendar(是Calendar的子类,日期处理时候经常使用该类)****...
  • jquery获得单选框和下拉框的值,java日期处理,遍历list,遍历map
  • JAVA 日期处理大全

    千次阅读 2007-06-04 17:53:00
    <!--google_ad_client = "pub-1926348199765453";/* 728x90, 创建于 08-12-3 */google_ad_slot = "0385006797";google_ad_width = 728;google_ad_height = 90;//-->JAVA 日期处理大全1、获取服务器端当前日期:
    <script type="text/javascript">
     </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 
    

    JAVA 日期处理大全


    1、获取服务器端当前日期:

    <% @ page import = " java.util.Date " %>
    <%
    Date  myDate  =   new   Date ();
    %>

     

    2、获取当前年、月、日:

    <% @ page import = " java.util.Date " %>

    <%
    Date  myDate  =   new   Date ();
    int thisYear 
    =  myDate . getYear()  +   1900 ; // thisYear = 2003
    int thisMonth  =  myDate . getMonth()  +   1 ; // thisMonth = 5
    int thisDate  =  myDate . getDate (); // thisDate = 30
    %>


    3、按本地时区输出当前日期

    <% @ page import = " java.util.Date " %>
    <%
    Date  myDate  =   new   Date ();
    out
    . println(myDate . toLocaleString());
    %>



    输出结果为:
    2003-5-30


    4、获取数据库中字段名为"publish_time"、类型为Datetime的值


    <%@ page import="java.util.Date"%>
    <%
    ...连接数据库...
    ResultSet rs = ...
    Date sDate = rs.getDate("publish_time");
    %>
    [code]


    5、按照指定格式打印日期


    [code]
    <%@ page import="java.util.Date"%>
    <%@ page import="java.text.DateFormat"%>
    <%
    Date dNow = new Date();

    SimpleDateFormat formatter = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
    out.println("It is " + formatter.format(dNow));
    %>

     

    输出的结果为:
    It is 星期五 2003.05.30 at 11:30:46 上午 CST
    (更为详尽的格式符号请参看SimpleDateFormat类)


    6、将字符串转换为日期

    <% @ page  import = " java.util.Date " %>
    <% @ page  import = " java.text.DateFormat " %>
    <%
    String input 
    =   " 1222-11-11 " ;
    SimpleDateFormat formatter 
    =   new  SimpleDateFormat( " yyyy-MM-dd " );
    Date t 
    =   null ;

    try {

      t 
    = formatter.parse(input);

      out.println(t);

      }
    catch (ParseException e) {

      out.println(
    "unparseable using" + formatter);

      }


    %>

     

    输出结果为:
    Fri Nov 11 00:00:00 CST 1222


    7、计算日期之间的间


    输出结果为:
    Difference is 29 days.


    8、日期的加减运算
    方法:用Calendar类的add()方法


    <%@ page import="java.util.*"%>
    <%@ page import="java.text.*"%>
    <%
    Calendar now = Calendar.getInstance();
    SimpleDateFormat formatter = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
    out.println("It is now " + formatter.format(now.getTime()));
    now.add(Calendar.DAY_OF_YEAR,-(365*2));
    out.println("<br>");
    out.println("Two years ago was " + formatter.format(now.getTime()));
    %>

     

    输出结果为:
    It is now 星期五 2003.05.30 at 01:45:32 下午 CST
    Two years ago was 星期三 2001.05.30 at 01:45:32 下午 CST


    9、比较日期
    方法:用equals()、before()、after()方法

    1. <%@ page import="java.util.*"%>
    2. <%@ page import="java.text.*"%>
    3. <%
    4. DateFormat df = new SimpleDateFormat("yyy-MM-dd");
    5. Date d1 = df.parse("2000-01-01");
    6. Date d2 = df.parse("1999-12-31");
    7. String relation = null;
    8. if(d1.equals(d2))
    9. relation = "the same date as";
    10. else if(d1.before(d2))
    11. relation = "before";
    12. else
    13. relation = "after";
    14. out.println(d1 +" is " + relation + ' ' + d2);
    15. %>


    输出结果为:
    Sat Jan 01 00:00:00 CST 2000 is after Fri Dec 31 00:00:00 CST 1999


    10、记录一件事所花费的时间
    方法:调用两次System.getTimeMillis()方法,求差值

    1. <%@ page import="java.text.*"%>
    2. <%
    3. long t0,t1;
    4. t0 = System.currentTimeMillis();
    5. out.println("Cyc starts at " + t0);
    6. int k = 0;
    7. for(int i =0;i<100000;i++)
    8. t1 = System.currentTimeMillis();
    9. out.println("<br>");
    10. out.println("Cyc ends at " + t1);
    11. out.println("<br>");
    12. out.println("This run took " + (t1-t0) + "ms.");
    13. %>

    输出结果为:

    1. Cyc starts at 1054275312432
    2. Cyc ends at 1054275312442
    3. This run took 10ms.
    4. 其它:如何格式化小数
    5. <%@ page import="java.text.*"%>
    6. <%
    7. DecimalFormat df = new DecimalFormat(",###.00");
    8. double aNumber = 33665448856.6568975;
    9. String result = df.format(aNumber);
    10. out.println(result);
    11. %>

    输出结果为:
    33,665,448,856.66

      <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
    展开全文
  • java 日期处理jar包

    2019-12-23 16:36:41
    <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.9.4</version> </dependency>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.9.4</version>
    </dependency>

     

    展开全文
  • import java.sql.Timestamp; import java.util.Calendar; import java.util.... * 将一个从网页中取到日期字符串 * 存储到数据库中,首先要先转成Date类型 * 然后就可以对其格式化和取年月日等 */ public class
  • java日期处理简单封装

    千次阅读 2013-09-25 19:14:55
    今天没什么事情做,温习一下基本知识,在网上看到和日期处理的相关框架,什么joda,date4j等,都宣称超级强大简单易用。下下来试了下,确实都挺不错。不过自己不是经常涉及到日期操作,且涉及到的也不复杂。且不说...
  • 1.求两个日期之间相差的天数  /** * date2比date1多的天数 * * @param date1 * @param date2 * @return */ public static int differentDays(Date date1, Date date2) { Calendar cal1 ...
  • java日期处理二(Timestamp)

    万次阅读 2011-12-02 11:06:54
    要写一些与数据库连接时的日期处理,pstmt.setDate()的类型是java.sql.Date类型,这种符合规范的类型其实并没有把时分秒存进数据库,所以存取时就应该用setTimestamp()或getTimestamp()。  整理一: 一、往...
  • 晦涩的Java日期处理

    万次阅读 2006-12-22 10:56:00
    本文实在是旨在对Java标准库中日期处理之晦涩不堪现状的怒斥。在你反驳之前,请确信你了解过Joda(译注1)。我们问题的引发是因为所交付的客户不接受(因为某种原因)在其项目中使用开源的资源。我与我的同事们最近...
  • 接口给我提供一个yyyyMMddHH格式的日期字符串,我拿到以后要做一个之后72小时的预报,用图表展示。x轴就是时间序列,0-72。但是要求起点是x月x日(即接口返回的月日),后面是小时数,每到下一日0点时,不显示时刻,...
  • package com.game.admin.util... import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; import java.text.ParseException;...import java.t...
  • java日期处理一(Calendar,Date)

    千次阅读 2011-12-02 10:51:06
    虽然我们当我们使用日期时经常会想到使用Date类来表示,但是仔细查看Date类的方法,... 所以Java提供了另一功能更加强大的Calendar,我们使用Calendar就可以了。  比如Date nowDate = new Date();可以用Calendar n
  • 参数: 开始日期 终了日期返回: 间隔天数 /** * 两个日期之间相隔天数的共通 * @param from 開始時間 * @param to 終了時間 * @return 天数 */ public static String getDaysBetweenTwoDates(String date...
  • java中的日期处理类总结:Date/Calendar/GregorianCalendar/DateFormat/SimpleDateFormat类今天花了好大一点时间把java的日期类做了一下整理,哈1、 Date类(该类现在很少用了)l Date类对象的创建: n 创建一个...
  • 功能: check日期是否合法 (主要实现某年某月日期是否超过当月最大日期的合法性判断) 测试数据: 20070229 false 20070228 false 20040229 true /** * 日期合法check * * @param dat
  • Java时间日期处理相关文档收藏 Java时间日期处理 Java日期处理
  • java处理日期合并

    2014-03-25 10:09:13
    java处理日期合并
  • 日期和时间格式由 日期和时间模式字符串 指定。...只是在格式化时将它们简单复制到输出字符串白话文的讲:这些A——Z,a——z这些字母(不被单引号包围的)会被特殊处理替换为对应的日期时间,其他的字...
  • java日期处理,日期的运输等等。java日期处理,日期的运输等等。
  • 主要介绍了JAVA时间日期处理类,可实现遍历两个日期之间的每一天的功能,涉及针对日期的常见操作技巧,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 193,948
精华内容 77,579
关键字:

java日期处理

java 订阅