Java时间戳函数:如何在不同格式之间转换
发布时间:2023-07-03 17:26:39
在Java中,可以使用java.util.Date和java.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.LocalDateTime和java.time.ZoneId将其转换为本地日期和时间。最后,使用java.time.format.DateTimeFormatter将日期格式化为指定的字符串。
无论使用java.util.Date还是java.time包,都可以根据需要选择适合的方式进行时间戳和不同格式之间的转换。
