java时间戳与Date相互转换
时间: 2024-10-20 17:18:31 浏览: 144
在Java中,时间戳和`java.util.Date`对象可以互相转换,因为它们本质上都是表示时间的方式。
1. **将时间戳转换为Date**: 时间戳通常是以毫秒为单位自从1970年1月1日(UTC/GMT的午夜)以来所经过的秒数。你可以通过`Date`类的构造函数或者静态方法`Date.setTime(long timestamp)`来创建一个`Date`实例:
```java
long timestamp = System.currentTimeMillis(); // 获取当前时间的时间戳
Date date = new Date(timestamp);
```
2. **将Date转换为时间戳**: `Date`对象有一个名为`getTime()`的方法,它会返回自1970年以来的毫秒数。例如:
```java
Date date = new Date();
long timestamp = date.getTime();
```
**相关问题--:**
1. 除了毫秒,还有哪些单位可以用来表示时间戳?
2. Java中有没有现成的方法可以直接从字符串解析出Date对象?
3. 如果我想让日期格式化显示而不是时间戳,应该怎么做?
相关问题
java.time.LocalDateTime与时间戳与Date相互转换
好的,这是一个技术问题,可以回答。可以使用以下代码实现相互转换:
1. LocalDateTime 转换为时间戳
```
LocalDateTime localDateTime = LocalDateTime.now();
long timestamp = localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli();
```
2. 时间戳 转换为 LocalDateTime
```
long timestamp = System.currentTimeMillis();
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), ZoneId.systemDefault());
```
3. Date 转换为 LocalDateTime
```
Date date = new Date();
Instant instant = date.toInstant();
LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
```
4. LocalDateTime 转换为 Date
```
LocalDateTime localDateTime = LocalDateTime.now();
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
Date date = Date.from(instant);
```
java时间戳和时间相互转换
### Java 中时间戳与日期时间相互转换
#### 时间戳转日期时间
为了将时间戳转换成指定格式的日期字符串,在现代Java版本中推荐使用`java.time`包中的类来处理。可以创建一个表示瞬时时刻的对象,再将其转化为特定时区下的本地化日期时间对象,并最终按照期望的模式格式化输出。
```java
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
public class TimestampToDate {
public static void main(String[] args) {
long timestamp = 1703121836842L; // 假设这是给定的时间戳毫秒数
Instant instant = Instant.ofEpochMilli(timestamp);
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zoneId);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDate = localDateTime.format(formatter);
System.out.println(formattedDate);
}
}
```
这段代码展示了如何把一个长时间戳(以毫秒计)解析为可读性强的标准日期时间表达形式[^1]。
#### 日期时间转时间戳
对于相反方向的操作——即从标准日期时间到时间戳,则可以通过先构建对应的`LocalDateTime`实例并指定期望的时区信息,之后调用相应方法获得自纪元以来经过了多少毫秒或者秒的数量作为时间戳返回。
```java
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.Instant;
public class DateToTimestamp {
public static void main(String[] args) {
String dateTimeStr = "2025-01-09 16:34:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.parse(dateTimeStr, formatter);
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
long epochMillis = instant.toEpochMilli();
System.out.println(epochMillis);
}
}
```
此段程序说明了怎样依据提供的日期时间串计算出对应的时间戳值[^3]。
另外需要注意的是,如果只需要获取当前系统的实时时间戳而无需考虑具体的日历日期的话,可以直接利用`System.currentTimeMillis()`函数快速得到结果;而对于精确度更高的场景下则建议采用`Instant.now().getEpochSecond()`配合纳秒级别偏移量的方式来记录更精细的变化情况[^2]。
阅读全文
相关推荐














