利用@JsonSerialize注解将在controller返回的实体类的Date转换为秒的时间戳

我这里做的是将实体类的Date属性以到秒的时间戳返回,因为用手写太麻烦,而且之后可能其他地方也要这样,所以这里直接在这个类的属性上声明的注解,这样在使用get方法的时候就会自动转换成秒的时间戳

首选要新建一个java bean;

这个是转换要用到的工具类

package com.chan.wechatshop.utils.serializer;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;
import java.util.Date;

public class Date2LongSerializer extends JsonSerializer<Date> {

    @Override
    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        jsonGenerator.writeNumber(date.getTime() / 1000);
    }
}

下面这个是被转换的java bean,在对应的属性上声明注解 @JsonSerialize(using = Date2LongSerializer.class)就大功告成了,需要注意的是,Date2LongSerializer.class里的泛型和被转换的属性的java类型是一致的,都是Date

package com.chan.wechatshop.dto;


/**
 * 定义一个业务类,不与实体类混淆,这个是一个订单主表和若干订单明细
 */

import com.chan.wechatshop.dataobject.OrderDetail;
import com.chan.wechatshop.enums.OrderStatusEnum;
import com.chan.wechatshop.enums.PayStatusEnum;
import com.chan.wechatshop.utils.serializer.Date2LongSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
public class OrderDTO {

    private String orderId; //订单id

    private String buyerName;   //买家名字

    private String buyerPhone;  //买家电话

    private String buyerAddress;    //买家地址

    private String buyerOpenid;     //买家微信openid

    private BigDecimal orderAmount; //订单总金额

    private Integer orderStatus = OrderStatusEnum.NEW.getCode();    //订单状态,默认为新订单=0

    private Integer payStatus = PayStatusEnum.WAIT.getCode();  //支付状态,默认为0新订单未支付

    @JsonSerialize(using = Date2LongSerializer.class)
    private Date createTime = new Date();        //创建时间

    @JsonSerialize(using = Date2LongSerializer.class)
    private Date updateTime = new Date();        //更新时间

    private List<OrderDetail> orderDetailList;

}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以使用Java的`java.util.Date`类的`getTime()`方法将日期转换时间戳。 例如: ``` import java.util.Date; public class Main { public static void main(String[] args) { // 创建一个日期对象 Date date = new Date(); // 获取当前日期对应的时间戳 long timeStamp = date.getTime(); System.out.println(timeStamp); } } ``` 运行上述代码会输出当前时间对应的时间戳。 注意:时间戳是从1970年1月1日 00:00:00 GMT开始计算的毫数,所以输出的值是从1970年1月1日开始到当前时间的毫数。 ### 回答2: 在Java,将Date日期格式转换时间戳可以使用两种方法。 方法一:使用getTime()方法 Date有一个可用于获取时间戳的方法getTime()。该方法返回的是从1970年1月1日0时0分0(也称为Unix纪元)到当前Date对象表示的时间之间的毫数。将这个毫转换为以为单位的时间戳,只需将其除以1000即可。 示例代码如下: ``` import java.util.Date; public class DateToTimestamp { public static void main(String[] args) { Date date = new Date(); long timestamp = date.getTime() / 1000; System.out.println("时间戳:" + timestamp); } } ``` 方法二:使用SimpleDateFormat类 SimpleDateFormat类是Java用于处理日期格式化的类。可以使用它将Date对象格式化为特定的日期字符串,然后再将该字符串解析为时间戳。 示例代码如下: ``` import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateToTimestamp { public static void main(String[] args) { Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = sdf.format(date); try { Date parsedDate = sdf.parse(dateString); long timestamp = parsedDate.getTime() / 1000; System.out.println("时间戳:" + timestamp); } catch (ParseException e) { e.printStackTrace(); } } } ``` 以上是将Date日期格式转换时间戳的两种方法,可以根据实际需求选择适合的方法进行使用。 ### 回答3: 在Java,可以使用`java.util.Date`和`java.sql.Timestamp`类来处理日期和时间戳。为了将一个日期转换时间戳,可以按照以下步骤进行操作: 1. 首先,创建一个`Date`对象,表示要转换的日期。例如,`Date date = new Date();`可以创建一个表示当前日期和时间的对象。 2. 接下来,可以使用`getTime()`方法来获取日期对象的时间戳。这个方法返回一个`long`类型的值,表示从1970年1月1日00:00:00 GMT以来的毫数。 ```java long timestamp = date.getTime(); ``` 3. 如果需要将时间戳存储到数据库,可以使用`java.sql.Timestamp`类来处理。可以使用`Timestamp`的构造函数将时间戳转换为`Timestamp`对象。 ```java Timestamp timestamp = new Timestamp(date.getTime()); ``` 4. 如果需要将时间戳转换回日期,可以使用`Timestamp`的`getTime()`方法来获取时间戳的毫数,并将其传递给`Date`的构造函数。 ```java Date date = new Date(timestamp.getTime()); ``` 注意:由于`java.util.Date`和`java.sql.Timestamp`类都属于`java.util`包,因此需要在代码引入它们的类。 使用上述方法,可以很容易地将Java的日期对象转换时间戳,并且可以根据需要进行相反的转换

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值