Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JaxbDateSerializer XmlAdapter-日期转换随机问题_Java_Date_Xmladapter - Fatal编程技术网

Java JaxbDateSerializer XmlAdapter-日期转换随机问题

Java JaxbDateSerializer XmlAdapter-日期转换随机问题,java,date,xmladapter,Java,Date,Xmladapter,我有一个Java应用程序的日期转换随机问题。我使用了一个类JaxbDateSerializer,它扩展了XmlAdapter来解码字符串日期 import javax.xml.bind.annotation.adapters.XmlAdapter; /** * Adapts a Date for custom marshaling. * */ public class JaxbDateSerializer extends XmlAdapter<String, Date> {

我有一个Java应用程序的日期转换随机问题。我使用了一个类JaxbDateSerializer,它扩展了XmlAdapter来解码字符串日期

import javax.xml.bind.annotation.adapters.XmlAdapter;

/**
 * Adapts a Date for custom marshaling.
 *
 */

public class JaxbDateSerializer extends XmlAdapter<String, Date> {
/**
 * le format yyyyMMddHHmmss
 */
public static final SimpleDateFormat DATE_TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss");

/**
 * le format yyyyMMdd
 */
public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");

@Override
public String marshal(Date date) {
    return DATE_TIME_FORMAT.format(date);
}
Camel获取CSV文件并处理每一行,但是我们得到了一些关于无效日期的随机错误,例如:

2015-04-09 00:34:43906警告[TraitementTransverseImpl:setActiviteNumero]TraitementTransverseImpl setActivite日期不正确数字:29999999日期周五2015年8月28日11:06:28

我不知道如何找到问题

问候,,
卢多维奇

这种行为最可能的原因是因为以下几行:

public static final SimpleDateFormat DATE_TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss");
...
public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMdd");
对象不是线程安全的

您必须为
marshall
方法创建这些本地的新实例

@Override
public String marshal(Date date) {
    return new SimpleDateFormat("yyyyMMddHHmmss").format(date);
}
@Override
public String marshal(Date date) {
    return new SimpleDateFormat("yyyyMMddHHmmss").format(date);
}