如何使用Java函数将日期时间字符串转换为时间戳?
发布时间:2023-06-21 03:16:10
在Java中,时间戳是一个长整型(long),表示从1970年1月1日00:00:00 GMT(格林尼治标准时间)开始经过了多少毫秒。时区不同可能会影响时间戳的计算结果。
如果我们有一个日期时间字符串,例如"2022-01-01 12:00:00",我们可以使用Java函数将其转换为时间戳。
方法一:使用SimpleDateFormat类
SimpleDateFormat类可以将指定日期格式的字符串转换为日期对象(Date),然后使用该日期对象的getTime()方法获取其对应的时间戳。
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateToTimestamp {
public static void main(String[] args) {
// 定义日期时间字符串和格式
String datetimeStr = "2022-01-01 12:00:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
// 将日期时间字符串转换为日期对象
Date date = sdf.parse(datetimeStr);
// 获取该日期对象对应的时间戳(毫秒级别)
long timestamp = date.getTime();
System.out.println(datetimeStr + " 的时间戳为:" + timestamp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出:
2022-01-01 12:00:00 的时间戳为:1641045600000
方法二:使用Instant类
Instant类是Java 8引入的新类,它可以获取当前时间戳、指定时间戳所对应的日期时间等信息。我们可以将日期时间字符串转换为Instant对象,然后使用其toEpochMilli()方法获取对应的时间戳。
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
public class DateToTimestamp {
public static void main(String[] args) {
// 定义日期时间字符串和格式
String datetimeStr = "2022-01-01 12:00:00";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
try {
// 将日期时间字符串转换为LocalDateTime对象
LocalDateTime ldt = LocalDateTime.parse(datetimeStr, dtf);
// 获取该LocalDateTime对象对应的Instant对象
Instant instant = ldt.atZone(ZoneId.systemDefault()).toInstant();
// 获取该Instant对象对应的时间戳(毫秒级别)
long timestamp = instant.toEpochMilli();
System.out.println(datetimeStr + " 的时间戳为:" + timestamp);
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出:
2022-01-01 12:00:00 的时间戳为:1641045600000
以上就是如何使用Java函数将日期时间字符串转换为时间戳的方法,简单易懂。
