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

如何使用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函数将日期时间字符串转换为时间戳的方法,简单易懂。