Java之日期时间(内含格式化和解析工具Util类)

日期时间

生活中相关的时间

世界标准时间:格林尼治、格林威治(Greenwich Mean Time)简称GMT。

中国的标准时间:世界标准时间+8小时(北京时间,中国位于东八区)

时间单位换算公式:

​ 1秒=1000毫秒

​ 1毫秒=1000微秒

​ 1微秒=1000纳秒

计算机中的时间原点

计算机中的起始时间:1970年1月1日 00:00:00(C语言的诞生时间,Java沿用)

Date日期类

Date代表了一个特定的时间,精确到毫秒

构造方法

Date类的两个构造方法

方法名 说明
public Date() {} 表示默认时间
public Date(long date) {} 指定时间

有参构造:把从时间原点开始,过了指定毫秒的时时间,封装成一个Date对象,需要考虑时差的问题。

package com.test3.test30;

import java.util.Date;

public class DateDemo01 {
    
    
    public static void main(String[] args) {
    
    

        /**
         * 当前时间
         */
        Date date1 = new Date();
        System.out.println(date1);//Sun Nov 14 16:52:29 CST 2021

        /**
         * 中国是在东八区,所有要在标准时间的基础上加8小时
         * 世界标准时间上过了0毫秒
         */
        Date date2 = new Date(0L);
        System.out.println(date2);//Thu Jan 01 08:00:00 CST 1970

        /**
         * 在时间原点的基础上过了指定毫秒的时间节点
         */
        Date date3 = new Date(System.currentTimeMillis());
        System.out.println(date3);//Sun Nov 14 16:58:05 CST 2021

    }
}

成员方法

方法名 说明
public void setTime(long time) {} 设置时间,传递毫秒值
public long getTime() {} 获取时间对象的毫秒值
package com.test3.test30;

import java.util.Date;

public class DateDemo02 {
    
    

    /**
     * 设置时间,传递毫秒值
     */
    private static void setTime() {
    
    
        Date date2 = new Date();
        date2.setTime(0L);
        System.out.println(date2);//Thu Jan 01 08:00:00 CST 1970
    }

    /**
     * 获取时间对象的毫秒值
     */
    private static void getTime() {
    
    
        Date date1 = new Date();
        long time1 = date1.getTime();
        System.out.println(time1);//1636881019418  当前时间的毫秒值
        System.out.println(System.currentTimeMillis());//1636881019418
    }
}

SimpleDateFormat类

SimpleDateFormat可以对Date对象进行格式化和解析

格式化:
	Date对象-------------------------------> 2021年11月14日 00:00:00
解析:
	2021年11月14日 00:00:00---------------->Date对象
字母 含义
y
M
d
H 时(0-23)
h 时(1-12)
m
s

举例:

2021-11-14 17:23:11 ----------------------> yyyy-MM-dd HH:mm:ss
2021年11月14日 17:23:11 -------------------> yyyy年MM月dd日 HH:mm:ss

构造方法

方法名 说明
public SimpleDateFormat() {} 构造一个SimpleDateFormat,使用默认格式
public SimpleDateFormat(String pattern) {} 构造一个SimpleDateFormat,使用指定格式

成员方法

方法名 说明 备注
public final String format(Date date) {} 将日期格式转为日期/时间字符串 格式化(从Date到String)
public Date parse(String source){} 从给定字符串的开始解析文本以生成日期 解析(从String到Date)

日期格式化工具类

日期格式与指定格式字符串之间的相互转换

package com.test3.test30;

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

public class DateFormatUtil {
    
    

    /**
     * 将日期类从Sun Nov 14 17:45:24 CST 2021
     * 格式化为2021-11-14 17:40:52
     *
     * @param date
     * @return
     */
    private static String format1(Date date) {
    
    
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String result = sdf.format(date);//2021-11-14 17:40:52
        return result;
    }

    /**
     * 将日期类从Sun Nov 14 17:45:24 CST 2021
     * 格式化为2021年11月14日 17:42:29
     * 24小时制
     *
     * @param date
     * @return
     */
    private static String format2(Date date) {
    
    
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String result = sdf.format(date);//2021年11月14日 17:42:29
        return result;
    }

    /**
     * 将日期类从Sun Nov 14 17:45:24 CST 2021
     * 格式化为2021年11月14日 17:42:29
     * 12小时制
     *
     * @param date
     * @return
     */
    private static String format3(Date date) {
    
    
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String result = sdf.format(date);//2021-11-14 05:43:25
        return result;
    }
}

解析工具类

pattern中的格式必须与要解析的字符串日期格式完全保持一致!!!

否则会报错:

Exception in thread "main" java.text.ParseException: Unparseable date: "2021-11-14"
package com.test3.test30;

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

public class PareseUtil{
    
    
    
    /**
     * 将字符串格式的时间解析为日期对象
     *
     * @param dateStr 要解析的日期字符串
     * @return
     * @throws ParseException
     */
    private static Date parseStrToDate(String dateStr) throws ParseException {
    
    
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.parse(dateStr);
    }
}

猜你喜欢

转载自blog.csdn.net/zhangzengxiu/article/details/121321368