Java:时间日期类

文章目录

  • Date
  • Calendar
  • Date/Time API
    • LocalDate
    • LocalTime
    • LocalDateTime
    • ZonedDateTime
  • 功能
    • 获取标准时间
  • 参考文献

Date

同样位于java.util包下。

在java中,获取时间最简单的方式就是直接实例化Date类。

以自定义格式,取当前的时间日期:

Date date = new Date();
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");
System.out.println(dateFormat.format(date));

之前可以用Date类来获取当前日期和时间的结构信息,比如说:

Date date = new Date();
System.out.println(date.toLocaleString());
System.out.println(date.getDay());  // 当前星期几
System.out.println(date.getYear());  // 自从1900之后,经过了多少年
System.out.println(date.getMonth());  //当年第几个月,从0开始
System.out.println(date.getDate());  // 当前日
System.out.println(date.getSeconds());  // 当前秒
System.out.println(date.getMinutes());  // 当前分钟
System.out.println(date.getHours());  // 当前小时

不过以上API都是属于废弃API,看描述是从1.1开始就废弃掉了可能。

Calendar

Calendar类位于java.util包下,是Java7里比较新的一种获取时间的方式。

是专门用来转换特定时刻和日历字段之间的日期和时间。

之前比较常用的如new Date().getHours()等,已经属于废弃方法了,官方在文档里明确推荐使用Calendar类来代为替换。

分别取年月日时分秒:

Calendar cal=Calendar.getInstance();      
int y=cal.get(Calendar.YEAR);      
int m=cal.get(Calendar.MONTH);      
int d=cal.get(Calendar.DATE);      
int h=cal.get(Calendar.HOUR_OF_DAY);      
int mi=cal.get(Calendar.MINUTE);      
int s=cal.get(Calendar.SECOND);      
System.out.println("现在时刻是"+y+"年"+m+"月"+d+"日"+h+"时"+mi+"分"+s+"秒");

以自定义格式,取当前的时间日期:

Calendar calendar= Calendar.getInstance();
SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss");
System.out.println(dateFormat.format(calendar.getTime()));

或者直接sout下面的:

new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(Calendar.getInstance().getTime())	

注意,format里面的hh是12小时制,如果想看24小时制,那用HH

Date/Time API

Java8提供了一个全新的API,用来替换Java.util.DateJava.util.Calendar

其提供了多个类,方便我们操作时间,包括:

  • LocalDate
  • LocalTime
  • LocalDateTime
  • ZonedDateTime

LocalDate

位于java.time包下。

只显示日期,不显示时间,可以使用format来控制格式。

打印当前日期:

LocalDate date = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
System.out.println(formatter.format(date));		// 2023-01-16

LocalTime

同样位于java.time包下。

与LocalDate相反,LocalTime只能获取时间,而不能获取日期。

打印当前时间:

LocalTime time = LocalTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
System.out.println(formatter.format(time));		// 15:42:19

LocalDateTime

同时获取日期和时间,使用方式基本一致。

打印当前的日期和时间:

LocalDateTime dt = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(formatter.format(dt));	// 2023-01-16 15:46:48

ZonedDateTime

获取时间和日期的结构化字段

ZonedDateTime ZonedDateTime = ZonedDateTime.now();创建之后,可以通过以下方法访问实例的日期和时间字段:

Java:时间日期类_第1张图片

日期和时间的计算方法:

Java:时间日期类_第2张图片

功能

获取标准时间

可以通过System.currentTimeMillis() 来获取标准时间的时间戳,据说这个值是不受时区影响的纯净值。暂时存疑,因为这里我没验证过。

如:1673861700672

也可以把时间戳转换成我们可以理解的正常形式,但是这个过程中系统会自动加上时区:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
System.out.println(formatter.format(date));

参考文献

  1. java 获取当前时间的三种方法
  2. Java如何获取当前日期和时间?
  3. JAVA中获取当前时间的写法
  4. calendar的使用。以及如何获取某月份最后一天的方法

你可能感兴趣的:(Java,java,开发语言)