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

Java时间戳函数:如何在不同格式之间转换

发布时间:2023-07-03 17:26:39

在Java中,可以使用java.util.Datejava.time包提供的类来处理时间戳和不同格式之间的转换。

1. 时间戳转换为指定格式的日期字符串:

   import java.util.Date;
   import java.text.SimpleDateFormat;

   long timestamp = 1609459200000L; // 时间戳,单位为毫秒
   SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String dateString = dateFormat.format(new Date(timestamp));
   System.out.println(dateString);
   // 输出:2021-01-01 00:00:00
   

在这个例子中,SimpleDateFormat类将时间戳转换为指定格式的日期字符串。"yyyy-MM-dd HH:mm:ss"是日期字符串的格式,可以根据需要进行修改。

2. 指定格式的日期字符串转换为时间戳:

   import java.util.Date;
   import java.text.SimpleDateFormat;

   String dateString = "2021-01-01 00:00:00";
   SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   Date date = dateFormat.parse(dateString);
   long timestamp = date.getTime();
   System.out.println(timestamp);
   // 输出:1609459200000
   

在这个例子中,SimpleDateFormat类将指定格式的日期字符串转换为Date对象,然后使用getTime()方法获取该日期对象的时间戳。

3. Java 8及以上版本还引入了新的日期和时间API,即java.time包。使用这个新的API,可以更方便地进行时间戳和不同格式之间的转换:

   import java.time.Instant;
   import java.time.LocalDateTime;
   import java.time.ZoneId;
   import java.time.format.DateTimeFormatter;

   long timestamp = 1609459200000L; // 时间戳,单位为毫秒
   Instant instant = Instant.ofEpochMilli(timestamp);
   LocalDateTime dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
   DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
   String dateString = dateTime.format(formatter);
   System.out.println(dateString);
   // 输出:2021-01-01 00:00:00

   String dateString = "2021-01-01 00:00:00";
   DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
   LocalDateTime dateTime = LocalDateTime.parse(dateString, formatter);
   Instant instant = dateTime.atZone(ZoneId.systemDefault()).toInstant();
   long timestamp = instant.toEpochMilli();
   System.out.println(timestamp);
   // 输出:1609459200000
   

在这个例子中,java.time.Instant类将时间戳转换为Instant对象,然后使用java.time.LocalDateTimejava.time.ZoneId将其转换为本地日期和时间。最后,使用java.time.format.DateTimeFormatter将日期格式化为指定的字符串。

无论使用java.util.Date还是java.time包,都可以根据需要选择适合的方式进行时间戳和不同格式之间的转换。