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;
    }
}
原文地址:https://www.cnblogs.com/zhaozilongcjiajia/p/10484762.html