Java简易时间处理相关类

与时间相关的Java方法 心得分享

前言:
在Java程序中日期开始的时间是1970年1月1日00:00:00,所以在日期储存中的0代表了该时间点。而在我们东八区,则代表着1970年1月1日08:00:00。那么,负数代表了这个时间点之前的时间,正数代表了该时间点之后的时间。
由于日期基数比较大,一般采用长整型数字对其进行保存,保存的时间是从默认时间节点到你当期时间的毫秒数。

常用日期相关类

1.Date类,表示特定的瞬间,精确到毫秒。
在使用的时候需要导入java包

import java.util.Date;

1.1 Date类分配了一个Date对象,初始化为当前时间节点,精确到毫秒。
简易使用方法

 		//创建一个当前时间的时间对象
 		Date date=new Date();
 		//打印当前时间对象的时间节点
 		System.out.println("当前时间节点:"+date);
 		//打印当前时间节点与默认时间的毫秒数
 		System.out.println("默认时间到当前时间节点的毫秒数:"+date.getTime());

输出结果如下:
在这里插入图片描述

1.2 Date类分配Date对象并初始化对象,表示自默认节点开始的毫秒数。

 		//创建一个自定义的时间对象,距离默认时间1000毫秒
 		Date date1=new Date(1000);
 		//打印当前时间对象的时间节点
 		System.out.println("该时间节点:"+date1);
 		//打印当前时间节点与默认时间的毫秒数
 		System.out.println("默认时间到该时间节点的毫秒数:"+date1.getTime());

输出结果如下:
在这里插入图片描述
由于我在初始化对象的时候给了它1000毫秒的时间,所以显示的是默认时间点之后的1秒。

2. System 类 currentTimeMillis(): 当前时间,该方法具有long类型的返回值,表示的是当前的毫秒数。

		//当前的毫秒数
		long time=System.currentTimeMillis();
		//打印
		System.out.println("默认节点到当前时间节点的毫秒数"+time);

输出如下:
在这里插入图片描述
3. SimpleDateFormat 格式器
常见方法:
new SimpleDateFormat(模板)
format() : 格式化为字符串
parse():转成日期 (该方法存在ParseException异常的可能,此处需要对其进行异常抛出)
格式器需要导包

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

public class TestDate02 {
    public static void main(String[] args) throws ParseException {
        //创建当前时间对象
        Date date=new Date();

        //字符串格式   此处格式可根据需求自己定义
        //yyyy-MM-dd HH:mm:ss
        //yyyy年MM月dd日 HH时mm分ss秒
        SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //日期 转 格式化字符串
        // format()方法实现
        String dateStr=dateFormat.format(date);
        //打印格式化字符串对象
        System.out.println("打印指定格式时间(字符串类型):"+dateStr);

        //固定格式字符串  转成日期  yyyy-MM-dd HH:mm:ss
        //parse()方法实现
        date=dateFormat.parse("2020-08-05 10:00:00");
        //打印到指定时间毫秒数
        System.out.println("打印当前时间点:"+date.getTime());
    }
}

输出内容如下:
在这里插入图片描述

实用的日期类

1.Year
now():今年

2.Month 月(枚举类)
JANUARY:一月
FEBRUARY二月

3.LocalDate 本地日期
now():不包含时分秒的本时区的当前时间
of(年,月,日):构建本时区的时间

4.LocalDateTime 本地时间
now():包含时分秒的本时区的当前时间
of(年,月,日,时,分,秒):构建本时区的时间
format() : 格式化为字符串
parse():转成日期

演示代码如下:

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Month;
import java.time.Year;

public class TestDate03 {
    public static void main(String[] args) {
        //今年
        System.out.println("今年年份是:"+Year.now());
        System.out.println("指定年份是:"+Year.of(1999));
        //月份
        System.out.println("指定月份是:"+ Month.MAY);
        //不包含时分秒的今天
        LocalDate today=LocalDate.now();
        System.out.println("今天:"+today);
        //此时此刻,包含时分秒
        LocalDateTime now= LocalDateTime.now();
        System.out.println("现在:"+now);
        //您的生日 指定日期
        LocalDate yourBirthDate = LocalDate.of(2000, Month.MAY, 1);
        System.out.println("生日:"+yourBirthDate);
        //您的学习时间  指定时间点
        LocalDateTime dateTime = LocalDateTime.of(2020, 2, 25, 12, 30,40);
        System.out.println("时间:"+dateTime);
    }
}

输出结果如下:
在这里插入图片描述
5.DateTimeFormatter 格式器
演示代码如下:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

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

        //日期转换器
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        //格式化日期字符串
        LocalDateTime now=LocalDateTime.now();
        //将 时间 放入 指定格式器
        String nowTime=now.format(formatter);
        //打印当前时间
        System.out.println("转换个时候后时间显示为:"+nowTime);


        //字符串转日期
        //指定日期格式字符串
        String dateStr= "2020-02-25 11:23:04";
        //放入格式器    转成日期
        LocalDateTime date= LocalDateTime.parse(dateStr, formatter);
        //获取年
        System.out.println("获得的年份为:"+date.getYear());
        //获取月
        System.out.println("获得的月份为:"+date.getMonth());
        // 获取日  月份中的几号
        System.out.println("获得的日为:"+date.getDayOfMonth());
    }
}

输出结果如下:
在这里插入图片描述
6.间隔类
Period 时期
between():间隔 年月日

Duration 持续期间
ofDays(天数):天
ofHours(小时数):时
ofMinutes(分钟数):分
ofSeconds(秒数):秒

Instant 瞬间
now():现在
plus():添加
minus():相减

ChronoUnit 期量单位
YEARS、MONTHS、DAYS、HOURS、MINUTES、SECONDS
getDuration() :获取
Duration between():间隔

演示代码如下:

import java.time.*;
import java.time.temporal.ChronoUnit;

public class TestDate05 {
    public static void main(String[] args) {
        //创建当前时间对象
        LocalDate today = LocalDate.now();
        //创建指定时间对象
        LocalDate birthDate = LocalDate.of(2000, 1, 1);

        //时期间隔 年月日  生日和当前时间之间的时间差
        Period p = Period.between(birthDate, today);
        System.out.println(p.getYears()+"年"+p.getMonths()+"月"+p.getDays()+"日 ");

        LocalDate startDate = LocalDate.of(2020, 8, 1);
        LocalDate endDate = LocalDate.of(2021, Month.JANUARY,5);
        //期量单位 间隔
        long between =ChronoUnit.YEARS.between(startDate, endDate);
        System.out.println("两时间 年之间的差 : " + between); //0 不是1不满一年不计算 在内
        between = ChronoUnit.MONTHS.between(startDate, endDate);
        System.out.println("两时间 月之间的差 : " + between); //5 不是6不满一月不计算 在内
        // 瞬间
        Instant inst1 = Instant.now();
        Instant inst2 = inst1.minus(Duration.ofSeconds(10));
        System.out.println("毫秒相隔 : " + Duration.between(inst1, inst2).toMillis());
        System.out.println("秒相隔 : " + Duration.between(inst1, inst2).getSeconds());
    }
}

输出结果如下:
在这里插入图片描述
后记:
在整个Java程序中,时间类在处理与时间相关的程序能够带来极大的便利性。有效的时间类,能过节约极大的运行空间。
时间类还有好多好多的内容,只有在使用的时候才能够记得去使用,在此分享该内容,主要是为了记住有部分方法的存在,节约使用者的时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值