postman传日期格式字符串转XMLGregorianCalendar 对象

首先:在一个实体对象中有这么个属性:

   @XmlSchemaType(name = "dateTime")
     protected XMLGregorianCalendar captureEndTime;

json字符串长这个样:

**

**直接传Json字符串后处理:**
<param>{ 
      "OccurDate":"2019-03-06 12:35:20",
      "DetectDate":"2020-03-06 12:35:20"
        }
        </param>

**

 net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(param);
            CaseRequest params = (CaseRequest) net.sf.json.JSONObject.toBean(json, CaseRequest.class);

报了个错:

net.sf.json.JSONException: Error while setting property=captureEndTime type class java.lang.String

原因

这是因为 XMLGregorianCalendar 不能接收String字符串

查了很久。。。
然后因为不能改对象类型,所以只能转转转了。。。。

从json字符串中获取一个日期格式

Object flag = json.get("OccurDate");

在该键值不为空的情况下:

   if (flag != null) {
                String OccurDate = json.getString("OccurDate");
                //先将字符串转成date类型
                Date OccurDates = DateUtils.stringToDate(OccurDate);
                //再将date转xmlDate。。。。
                XMLGregorianCalendar xmlGregorianCalendar = DateUtils.dateToXmlDate(OccurDates);
                //最后set
                params.setOccurDate(xmlGregorianCalendar);
            }
DateUtils:
  /**
     *将字符串转换为date
     *
     * */
public  static Date stringToDate(String time){
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = null;
    try {
        date = dateFormat.parse(time);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return date;
}

/**
     * 将Date类转换为XMLGregorianCalendar
     *
     * @param date
     * @return
     */
    public static XMLGregorianCalendar dateToXmlDate(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        DatatypeFactory dtf = null;
        try {
            dtf = DatatypeFactory.newInstance();
        } catch (DatatypeConfigurationException e) {
        }
        XMLGregorianCalendar dateType = dtf.newXMLGregorianCalendar();
        dateType.setYear(cal.get(Calendar.YEAR));
        // 由于Calendar.MONTH取值范围为0~11,需要加1
        dateType.setMonth(cal.get(Calendar.MONTH) + 1);
        dateType.setDay(cal.get(Calendar.DAY_OF_MONTH));
        dateType.setHour(cal.get(Calendar.HOUR_OF_DAY));
        dateType.setMinute(cal.get(Calendar.MINUTE));
        dateType.setSecond(cal.get(Calendar.SECOND));
        return dateType;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值