03_Java时间类

java

Java常用时间类总结:

  1. Date 日期类

  2. Calendar 日历类

  3. SimpleDateFormat 格式化时间类

Date和Calendar类 在java.util包中

SimpleDateFormat类 在java.text包

1.Date 日期

【1】new Date() 可以获取到系统时间

【2】getTime() 能获取到时间的long形式,可以用来计算时间差

getTime()——获取计算机底层存储的数字,返回一个数字用来表示时间,这个数字的类型long,单位为毫秒。

【参考代码】

import java.util.Date;

public class Test {

public static void main(String[] args) {

Date d = new Date();

System.out.println(d); // 系统时间

//get...()——获取年月日.....

System.out.println(d.getYear()+1900); // 从1900年开始算的

System.out.println(d.getMonth()+1); // 月份从0开始计算

System.out.println(d.getDate()); // 天数

System.out.println(d.getHours());// 小时

//getTime()——获取到时间的毫秒形式 返回的是long

System.out.println(d.getTime());

}

}

2.Calendar 日历

【1】get() 获取到时间的某一部分

【2】set() 设置时间 - -> 计算时间:系统已经帮我们设置好了,不用担心二月有多少天等问题,计算时间十分方便

注:Calendar 日历类是抽象类,因此不可以去new对象。虽然抽象类不能创建对象,但是jdk官方提供了一个实例对象的操作:

​ Calendar rightNow = Calendar.getInstance();

我们通过这条代码就是直接造了一个Calender的对象

【参考代码】:get() 获取到时间的某一部分:

package date;

import java.util.Calendar;

public class TestCalendar {

public static void main(String[] args) {

Calendar cal = Calendar.getInstance();

// System.out.println(cal);

/*

假设当天:

2021

8

10

*/

cal.set(Calendar.DATE,cal.get(Calendar.DATE)+31); // 计算时间(这里用天数计算的)

// 获取Calendar创建的对象里的所有内容

System.out.println(cal.get(Calendar.YEAR)); // 2021 年

System.out.println(cal.get(Calendar.MONTH)+1); // 月份:从0开始的 结果:为10月

System.out.println(cal.get(Calendar.DATE)); // 日

System.out.println(cal.get(Calendar.HOUR_OF_DAY));// 小时

System.out.println(cal.get(Calendar.MINUTE));

System.out.println(cal.get(Calendar.SECOND));

}

}

【参考代码】:set() 设置时间 - -> 计算时间:

注:cal.setTime(d); 把Date转化成Calendar

package date;

import java.util.Calendar;

import java.util.Date;

public class TestCalendar {

public static void main(String[] args) {

Date d = new Date();

Calendar cal = Calendar.getInstance();

cal.setTime(d);// 把Date转化成Calendar

System.out.println(cal);

System.out.println(cal.get(Calendar.YEAR)); // 年

System.out.println(cal.get(Calendar.MONTH)+1); // 月份:从0开始的

System.out.println(cal.get(Calendar.DATE)); // 日

}

}

3.SimpleDateFormat格式化时间

Date,Calendar通过引用也可以进行时间的格式化,但比较繁琐,而SimpleDateFormat类是专门帮我们格式化时间的工具类,它在java.text包中。

【时间格式】:yyyy-MM-dd HH:mm:ss

SimpleDateFormat类有两大常用方法:

【1】format(Date):

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

【参考代码】

package Simple;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.logging.SimpleFormatter;

public class Test {

public static void main(String[] args) {

Date d = new Date();

System.out.println(d); //Thu Aug 12 08:40:08 CST 2021 不美观

// 设置格式化时间的模式,我们常用yyyy-MM-dd HH:mm:ss这个模式

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

String s = sdf.format(d); // 格式化时间

System.out.println(s); // 2021-08-12 08:45:09

}

}

【2】parse(String):

parse(String) 帮我们把字符串转化成时间

【参考代码】

package Simple;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Scanner;

public class Test2 {

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

Scanner sc = new Scanner(System.in);

System.out.println("请输入一个时间(yyyy-MM-dd HH:mm:ss):");

String s = sc.nextLine();

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

Date d = sdf.parse(s); // 把字符串转成时间

System.out.println(d);

/*

请输入一个时间(yyyy-MM-dd HH:mm:ss):

2021-08-12 12:25:21

Thu Aug 12 12:25:21 CST 2021

*/

}

}

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

4.计算时间差

计算思路:

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

【参考代码】

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+"分钟");

}

}

以上是 03_Java时间类 的全部内容, 来源链接: utcz.com/z/391186.html

回到顶部