同样位于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类位于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
Java8提供了一个全新的API,用来替换Java.util.Date
和Java.util.Calendar
。
其提供了多个类,方便我们操作时间,包括:
位于java.time包下。
只显示日期,不显示时间,可以使用format来控制格式。
打印当前日期:
LocalDate date = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
System.out.println(formatter.format(date)); // 2023-01-16
同样位于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 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.now();
创建之后,可以通过以下方法访问实例的日期和时间字段:
日期和时间的计算方法:
可以通过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));