java 之日期时间操作

package com.gongxy.demo;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * Date 时间类
 * Calendar 时间操作类
 * SimpleDateFormat 时间格式化类
 */
public class DateTest {
    public static void main(String[] args) {
        simpleDateFormat();
    }

    /**
     * compareTo[比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。]
     * equals[当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。]
     * toString[把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。]
     */
    static void dateTest(){
        Date d = new Date();
        System.out.println(d);//国际时间格式 [Tue Aug 11 22:31:14 CST 2020]

        Date d1 = new Date(1000);
        int result = d.compareTo(d1);
        System.out.println(result);//[1]
        boolean bResult = d.equals(d1);
        System.out.println(bResult);//false

        Date dNow = new Date();
        result = d.compareTo(dNow);
        System.out.println(result);//生成时间的误差,会导致dNow晚于d一点时间[-1]
        bResult = d.equals(dNow);
        System.out.println(bResult);//false

        Date d2 = d;
        result = d.compareTo(d2);
        System.out.println(result);//[0]
        bResult = d.equals(d2);
        System.out.println(bResult);//true

        int hashCode = d.hashCode();
        System.out.println(hashCode);//-570822014

        System.out.println(d.toString());//[Tue Aug 11 22:45:18 CST 2020]
    }

    /**
     * Calendar
     * getTime() 当前时间
     * get() 取
     * set() 设置
     * add() 运算
     */
    static void calendarTest(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        Calendar cal = Calendar.getInstance();
        //cal.getTime() Date[返回当前时间]
        System.out.println(sdf.format(cal.getTime()));//2020-08-12 23:38:26

        //取值
        int r1 = cal.get(Calendar.YEAR);//2020 [年]
        r1 = cal.get(Calendar.MONTH);//7 [获取的月份需要+1 (0,1,2,3,4,5,6,7,8,9,10,11)]
        r1 = cal.get(Calendar.DATE);//12 [日]
        r1 = cal.get(Calendar.HOUR);//11 [时(12小时制)]
        r1 = cal.get(Calendar.HOUR_OF_DAY);//23 [时(24小时制)]
        r1 = cal.get(Calendar.MINUTE);//18 [分]
        r1 = cal.get(Calendar.SECOND);//20 [秒]
        r1 = cal.get(Calendar.DAY_OF_WEEK);//4 [1周日 2周一 3周二 4周三 5周四 6周五 7周六]

        //设置值
        cal.set(2019, 6, 19, 14, 23, 59);
        System.out.println(sdf.format(cal.getTime()));//2019-07-19 14:23:59

        cal.set(Calendar.YEAR, 2018);//2018年
        cal.set(Calendar.MONTH, 0);//0 [一月]
        cal.set(Calendar.DATE, 1);//1号
        cal.set(Calendar.HOUR_OF_DAY, 14);//14时
        cal.set(Calendar.MINUTE, 12);//12分
        cal.set(Calendar.SECOND, 12);//12秒
        System.out.println(sdf.format(cal.getTime()));//2018-01-01 14:12:12

        //运算值
        cal.add(Calendar.YEAR, -1);
        cal.add(Calendar.MONTH, -1);
        cal.add(Calendar.DATE, 1);
        cal.add(Calendar.HOUR_OF_DAY, 1);
        cal.add(Calendar.MINUTE, 10);
        cal.add(Calendar.SECOND, 10);
        System.out.println(sdf.format(cal.getTime()));//2016-12-02 15:22:22
    }

    /**
     *   SimpleDateFormat函数语法:
     *   G 年代标志符
     *   y 年
     *   M 月
     *   d 日
     *   h 时 在上午或下午 (1~12)
     *   H 时 在一天中 (0~23)
     *   m 分
     *   s 秒
     *   S 毫秒
     *   E 星期
     *   D 一年中的第几天
     *   F 一月中第几个星期几
     *   w 一年中第几个星期
     *   W 一月中第几个星期
     *   a 上午 / 下午 标记符
     *   k 时 在一天中 (1~24)
     *   K 时 在上午或下午 (0~11)
     *   z 时区
     */
    static void simpleDateFormat(){
        //String strDateFormat = "yyyy-MM-dd HH:mm:ss E";
        String strDateFormat = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
        Date d = new Date();
        System.out.println(sdf.format(d));//2020-08-12 23:51:57 星期三

        String studyD = "2020-08-14 22:55:23";
        try {
            Date dStudy = sdf.parse(studyD);
            System.out.println(dStudy);//Fri Aug 14 22:55:23 CST 2020
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

  

原文地址:https://www.cnblogs.com/gygtech/p/13493874.html