• Date 时间 日期 常用方法函数


    转载自https://www.cnblogs.com/lcngu/p/5154834.html

    一、java.util.Date对象用来表示时间,基本方法如下:

    Date mDate = new Date();  //获取现在时间

    Date mDate = new Date(long);   //参数是自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数

    boolean after(Date when)    //测试此日期是否在指定日期之后。

    boolean before(Date when)    //测试此日期是否在指定日期之前。

    Object clone()    //返回此对象的副本。

    int compareTo(Date anotherDate)    //比较两个日期的顺序。

    boolean equals(Object obj)    //比较两个日期的相等性。

    long getTime()    //返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

    int hashCode()    //返回此对象的哈希码值。

    void setTime(long time)    //设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。

    String toString()     //把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中:

              dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。

              mon 是月份 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)。

              dd 是一月中的某一天(01 至 31),显示为两位十进制数。

              hh 是一天中的小时(00 至 23),显示为两位十进制数。

              mm 是小时中的分钟(00 至 59),显示为两位十进制数。

              ss 是分钟中的秒数(00 至 61),显示为两位十进制数。

              zzz 是时区(并可以反映夏令时)。标准时区缩写包括方法 parse 识别的时区缩写。如果不提供时区信息,则 zzz 为空,即根本不包括任何字符。

              yyyy 是年份,显示为 4 位十进制数。

    二、java.text.SimpleDateFormat可以将Date对象和String相互转换,常用方法如下:

    1、将Date转为String

    Date date = new Date();
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EE",Locale.getDefault());
    String str
    = df.format(date);

    2、将String转为Date

    String str = "2016-01-24 02:51:07 星期日";
    DateFormat df = new SimpleDateFormat("yyyy-MM-01 hh:mm:ss EE");
    Date date = df.parse(str);

    三、java.util.GregorianCalendar类(Calendar的直接子类)提供了世界上大多数国家使用的标准日历系统

    需要注意:

    1、Calendar的星期是从周日开始的,常量值为0。
    2、Calendar的月份是从一月开始的,常量值为0。
    3、Calendar的每个月的第一天值为1。

     常用方法如下:

    1、Calendar now = new GregorianCalendar(2016, 01, 24, 15, 55, 44);     //创建对象,年/月/日/时/分/秒

    2、Calendar now = new GregorianCalendar();    now.setTime(new Date());    //通过Date对象来创建

    3、now.get(Calendar.YEAR));    //获取年份

    4、now.get(Calendar.MONTH));    //获取月份

    5、now.get(Calendar.DAY_OF_MONTH));    //当月中的第几日

    6、now.get(Calendar.HOUR));    //获取时

    7、now.get(Calendar.MINUTE));    //获取分

    8、now.get(Calendar.SECOND));    //获取秒

    9、now.get(Calendar.AM_PM));    //是上午还是下午

    10、now.get(Calendar.DAY_OF_WEEK));    //当周的第几天

    运算的方法主要是add()函数,例如,往后推五年:

    now.add(Calendar.YEAR, 5);

    四、时间工具类,将上面常用的函数放入该类,使用时比较方便。

    import android.text.TextUtils;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    
    /**
     * 时间工具类
     * @author bluefisher
     *
     */
    public class TimeUtils{
    
        /**
         * 日期格式,yyyyMMdd: "yyyy-MM-dd"
         */
        public static final String yyyy_MM_ddStr = "yyyy-MM-dd";
    
        /**
         * 日期格式,yyyyMMddhhmmss: "yyyy-MM-dd kk:mm:ss"
         */
        public static final String yyyyMMddhhmmssStr = "yyyy-MM-dd HH:mm:ss";
    
        public TimeUtils() {
    
        }
    
        /**
         * 时间加减
         */
        public static Date getDateAfterOpTime(Date date,int field,int amount) {
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(field,amount);
            return cal.getTime();
        }
    
        public static String dateToStr(Date date,String pattern){
            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            return sdf.format(date);
        }
    
        public static Date strToDate(String dateStr,String pattern){
            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            try {
                return sdf.parse(dateStr);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return null;
        }
    
        public static String transferLongToDate(Long millSec,String pattern) {
            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            Date date = new Date(millSec.longValue());
            return sdf.format(date);
        }
    
        public static String getWeekDay() {
            return null;
        }
    
        public static Date getDate(String dateString, String format) {
            if (!TextUtils.isEmpty(dateString)) {
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
                try {
                    return simpleDateFormat.parse(dateString);
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
            return null;
        }
    
        public static String getDate(Date date, String format) {
            if (null != date) {
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
                return simpleDateFormat.format(date);
            }
            return null;
        }
    
        /**
         * 获取指定时间的年份
         * @param date
         * @return
         */
        public static int getYear(Date date){
            SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
            String dateStr = sd.format(date);
    
            return Integer.parseInt(dateStr.substring(0, 4));
    
        }
    
        /**
         * 获取制定时间的月份
         * @param date
         * @return
         */
        public static int getMonth(Date date){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.MONTH) + 1;
    
        }
    
        /**
         * 获取制定时间的日
         * @param date
         * @return
         */
        public static int getDay(Date date){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            return calendar.get(Calendar.DAY_OF_MONTH);
        }
    
        public static String getWeek(Date date){
            String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            int w = calendar.get(Calendar.DAY_OF_WEEK) - 1;
            if (w < 0)
                w = 0;
            return weekDays[w];
        }
    
        //2015年7月5日 星期三
        public static String getStrDateAndWeed(Date date){
            String str = getYear(date) + "年" + getMonth(date) + "月" + getDay(date) + "日" + " " + getWeek(date);
            return str;
        }
    
        /**
         * 计算两个日期相差的天数
         * @param data1
         * @param data2
         * @return
         */
        public static Integer days(String data1, String data2){
            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
            Long c = null;
            try {
                c = sf.parse(data2).getTime()-sf.parse(data1).getTime();
            } catch (ParseException e) {
                e.printStackTrace();
            }
            long d = c/1000/60/60/24;//
            int days = (int)d;
            return days;
        }
    
        /**
         * 日期增长
         * @param time
         * @param dayCount 增长天数
         * @return
         */
        public static String time(String time, int dayCount){
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String str="";
            try {
                Date date = sdf.parse(time);
                Calendar calendar = new GregorianCalendar();
                calendar.setTime(date);
                calendar.add(calendar.DATE, dayCount);//
                //把日期往后增加一天.整数往后推,负数往前移动
                date = calendar.getTime(); // 这个时间就是日期往后推一天的结果
                str= sdf.format(date);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return str;
        }
    }
  • 相关阅读:
    SSH2练习中问题之org.apache.jasper.JasperException: /findAllProductions_list.jsp(31,1) TLD又はタグファイル中のattribute指示子に従って属性itemsはどんな式も受け付けません解决方案
    关于HibernateTempleate模版很多代码可以直接使用,是开发人员不可多得选择
    Java实现权限控制之2
    struts 之 constant
    JSTL表达式之<c:forEach>
    关于事后检查和确认
    关于删除
    jcommander 解析boolean参数
    多线程
    关于proto文件的更新
  • 原文地址:https://www.cnblogs.com/zhaozilongcjiajia/p/10484762.html
Copyright © 2020-2023  润新知