五、日期时间类详解

本文介绍了Java中日期时间的处理,包括时间戳的概念、Date类的使用、SimpleDateFormat类的格式化与解析功能,并提供了计算时间差的示例代码。通过这些方法,可以方便地进行时间的获取、转换和计算。
摘要由CSDN通过智能技术生成

一、日期时间类

1、时间戳

  • 时间戳:当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
    • java.lang.System 类 :此方法适于计算时间差
      • 这个类我们用的最多的就是 currentTimeMillis() 方法,返回值是long型,获取系统当前时间的时间戳。

Demo代码示例:

		long timeMillis = System.currentTimeMillis();
		      System.out.println(timeMillis);

2、Date 类和 SimpleDateFormat 类

  • java.util.Date类:表示特定的瞬间,精确到毫秒

    • 构造方法
      • 1)Date() 使用无参构造器创建的对象可以获取本地当前时间
      • 2)Date(long date) 传入时间戳,获取指定时间戳对应的 Date 对象
    • 成员方法
      • 1)getTime() 返回当前时间的时间戳
      • 2)toString() 把Date对象转换为以下形式的String:dow mon dd hh:mm:ss zzz yyy (dow是一周中的某一天 Sun、Mon、Tue、Wed、Thu、Fri、Sat;zzz是时间标准)。
  • java.text.SimpleDateFormat类 格式化时间类

    • 成员方法
      • format(Date) 帮我们把时间转成字符串,字符串的格式为SimpleDateFormat类定义对象时设置的时间格式
      • parse(String) 帮我们把字符串转化成时间

Demo代码示例:

public class Test {
    public static void main(String[] args) {
      //时间类Date获取系统当前时间的方法
        Date date = new Date();

		// getTime()方法返回的是时间戳
		long time = date.getTime();
		
		        System.out.println("时间戳------>"+time );

		
    		    System.out.println("当前的日期是------>"+date);
		        // 当前的日期是------>Tue Jun 28 16:49:29 CST 2022
		        //系统时间格式,与我们实际使用的时间格式不一致,需要将其转换成实际使用的时间格式。

        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

			//把时间转换成字符串
        	System.out.println("格式化后的时间------->"+format.format(date));
     
        //把字符串转换成时间
        Date d =  sdf.parse(s); 
        
     		   System.out.println(d);
          
    }
}

注:由于用户输入的字符串不一定是我们要求的格式,可能是任何东西,想把它们转成时间是不可能的,你不可能把一个人转成时间 对吧,因此存在着很大的风险未处理(异常: java.text.ParseException),为此我们需要处理异常。


4、计算时间差

  • 计算思路:

    • 格式化时间
    • 先将字符串转化成long类型时间
    • 计算毫秒级别时间差,取绝对值
    • 毫秒级别时间差转成秒级别
    • 秒级别时间差转成分钟级别
    • 分钟级别时间差转化显示成xx小时xx分钟

Demo代码示例:


package Simple;

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

public class TestDiff {
    public static void main(String[] args) throws ParseException {

        String s1 = "2021-08-12 12:00:00"; // 开始时间
        String s2 = "2021-08-12 14:35:00"; // 结束时间

        //格式化时间
        SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");

        //将字符串转成时间形式
        Date d1 = sdf.parse(s1);
        Date d2 = sdf.parse(s2);

        //计算时间差:先要获取时间毫秒形式(long类型) 再做差
        long long1 = d1.getTime();
        long long2 = d2.getTime();
        long diffTime = Math.abs(long1 - long2);

        // 秒级别时间差
        long diffSec = diffTime / 1000;

        // 分级别时间差
        long diffMin = diffSec / 60;

        //显示 xx小时xx分钟
        long displayHours = diffMin / 60; // 小时
        long displayMin = diffMin % 60; //分钟

        System.out.println("您学习的时长为:"+displayHours+"小时"+displayMin+"分钟");

    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值