欢迎访问宙启技术站
智能推送

了解Java日期类的getTime()函数,实现时间戳转换

发布时间:2023-05-23 18:01:48

Java内置了许多日期和时间的处理类,其中就包括日期类(Date)。Date类是在JDK 1.0中引入的,它提供了一系列用于操作日期和时间的方法。在java.util包中引入了Calendar类,它提供了许多控制月、日、时、分、秒等字段信息的方法,同时可以进行日期和时间的计算。其中值得特别注意的是,Date类里的getTime()函数可以将一个日期转化为对应的时间戳,同时,也可以将时间戳转化为对应的日期。

一、Java日期类

Java中,日期和时间的处理都是使用java.util.Date类实现的。Java的Date类表示特定的时间点,它本质上是一个long型的整数。如果将一个Date类型的变量toString(),则输出的是该日期和时间的标准格式,如:

System.out.println(new Date().toString());

输出结果如下:

Fri Aug 13 15:54:16 CST 2021

可以看到,标准格式以周几开头,然后是月份、日期、时间和时区信息。

二、getTime()方法

getTime() 方法的作用是获取Date对象自1970年1月1日00:00:00以来所经过的毫秒数。通常来说,这种毫秒数被称为时间戳。对于两个日期Date对象,如果它们的时间戳相等,则这两个日期是相等的。

下面是 getTime() 方法的定义:

public long getTime()

测试代码如下所示:

Date date = new Date();
long time = date.getTime();
System.out.println("当前时间毫秒数为:" + time);

输出结果如下:

当前时间毫秒数为:1628857643777

这里可以发现,获取到了当前时间的时间戳(即毫秒数)。由于时间戳通常比较难以直观理解,因此我们可以使用一些工具类来转换时间戳。

三、时间戳转换

对于已知时间戳的情况下,需要将其转换成标准日期格式。在Java中,可以使用SimpleDateFormat类来实现时间戳和日期格式之间的转换。

3.1、将时间戳转化为日期格式

SimpleDateFormat类可以将一种日期格式转换为另一种日期格式。其中,format()方法用于将Date对象转换为字符串,而parse()方法用于将字符串转换为Date对象。下面是将时间戳转换为日期格式的代码:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
long time = 1628857643777L;
Date date = new Date(time);
String sDateTime = sdf.format(date);
System.out.println("对应的日期为:" + sDateTime);

在实例化SimpleDateFormat对象时,需要传递一个格式化字符串,其中yyyy表示年份,MM表示月份,dd表示日期,hh表示小时,mm表示分钟,ss表示秒。输出结果如下:

对应的日期为:2021-08-13 03:34:03

可以看到,将结果转换成了对应的日期格式。

3.2、将日期格式转化为时间戳

同样,SimpleDateFormat类也可以将日期格式转换为时间戳。在 SimpleDateFormat类中,可以使用setLenient()方法让日期格式可弹性调整。在这个方法中,如果指定为false,则严格按照指定的格式进行格式化,否则则会根据某些规则弹性调整日期格式,但这往往是不建议的。下面是将日期格式转换为时间戳的示例代码:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String sDateTime = "2021-08-13 03:34:03";
Date date = sdf.parse(sDateTime);
long time = date.getTime();
System.out.println("对应的时间戳为:" + time);

这里的输入字符串需要按照规定的格式输入。输出结果如下:

对应的时间戳为:1628857643000

可以看到,将结果转换成了对应的时间戳格式。

四、总结

Java中的Date类和SimpleDateFormat类很容易实现日期和时间的处理和转换。 Date类可以用来获取当前时间和时间戳,SimpleDateFormat类可以用来格式化和解析日期时间。另外,Timer类和TimerTask类还可以用于创建定期执行的任务,这在实际开发中也非常常见。

在实际使用时,需要注意日期格式的难点和复杂性,这也是许多开发者所遇到的问题之一。另外,时区问题也是需要考虑的因素之一,因为不同的时区可能会导致日期和时间的差异。因此在日常开发中,要谨慎使用日期和时间相关的工具类。