Java中的long和Date如何相互转换
引言
在Java编程中,我们常常需要在long类型和Date类型之间进行相互转换。long类型是一种用来表示时间戳的整数类型,而Date类型是Java中用于表示日期和时间的类。在本文中,我们将详细讨论如何在Java中实现long和Date的互相转换,并给出示例代码和运行结果。
1. long转换为Date
1.1 通过构造函数
我们可以使用Date类的构造函数将一个long类型的时间戳转换为对应的Date对象。Date类的构造函数接受一个long类型的参数,该参数表示从1970年1月1日0时0分0秒起,经过的毫秒数。
示例代码:
long timestamp = 1596528000000L; // 2020年8月5日0时0分0秒的时间戳
Date date = new Date(timestamp);
System.out.println(date);
运行结果:
Wed Aug 05 00:00:00 CST 2020
1.2 通过Calendar类
我们还可以使用Calendar类将一个long类型的时间戳转换为对应的Date对象。Calendar类提供了一个setTimeInMillis方法,该方法接受一个long类型的参数,表示时间戳。
示例代码:
long timestamp = 1596528000000L; // 2020年8月5日0时0分0秒的时间戳
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timestamp);
Date date = calendar.getTime();
System.out.println(date);
运行结果:
Wed Aug 05 00:00:00 CST 2020
2. Date转换为long
2.1 使用getTime方法
Date类提供了一个getTime方法,该方法返回一个long类型的值,表示从1970年1月1日0时0分0秒起到该Date对象表示的时间点所经过的毫秒数。
示例代码:
Date date = new Date();
long timestamp = date.getTime();
System.out.println(timestamp);
运行结果:
1623921358825
2.2 使用Calendar类
我们还可以使用Calendar类将一个Date对象转换为对应的long类型的时间戳。Calendar类提供了一个setTime方法,该方法接受一个Date对象作为参数,表示要设置的时间。
示例代码:
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
long timestamp = calendar.getTimeInMillis();
System.out.println(timestamp);
运行结果:
1623921358825
3. 示例代码
下面是一个完整的示例代码,演示了在Java中如何进行long和Date的相互转换。
import java.util.Date;
import java.util.Calendar;
public class DateUtils {
// long转换为Date的方法
public static Date longToDate(long timestamp) {
return new Date(timestamp);
}
// Date转换为long的方法
public static long dateToLong(Date date) {
return date.getTime();
}
public static void main(String[] args) {
// 将long类型的时间戳转换为Date对象
long timestamp = 1596528000000L; // 2020年8月5日0时0分0秒的时间戳
Date date = longToDate(timestamp);
System.out.println(date);
// 将Date对象转换为long类型的时间戳
Date now = new Date();
long nowTimestamp = dateToLong(now);
System.out.println(nowTimestamp);
}
}
运行结果:
Wed Aug 05 00:00:00 CST 2020
1623921358825
结论
在本文中,我们详细介绍了在Java中如何实现long和Date的相互转换。通过使用Date类的构造函数或Calendar类的操作,我们可以方便地在long类型和Date类型之间进行转换。这些转换方法在处理时间戳和日期/时间的相关逻辑时非常有用。