我有一个 Java 应用程序的日期转换随机问题。我使用一个扩展 XmlAdapter 的 JaxbDateSerializer 类来解码字符串日期
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);
}
另一个类被调用来处理这个文件的每一行,我比较返回的日期来测试它是否在未来或不触发警告
/*
* (non-Javadoc)
* @see com.afone.rdn.traitement.TraitementTransverse#setActivite(int, java.util.Date, int)
*/
@Override
public void setActiviteNumero(ActiviteNumero activiteNumero) throws RdnTraitementException {
LOGGER.debug("TraitementTransverseImpl setActivite pour " + activiteNumero.getNumero() + " >> ("
+ activiteNumero.getDate() + ") traffic entrant: " + activiteNumero.getEntrantSortant());
Timestamp time = null;
if (activiteNumero.getDate() != null) {
time = new Timestamp(activiteNumero.getDate().getTime());
}
com.afone.rdn.entities.Numero numeroActivite = new com.afone.rdn.entities.Numero(activiteNumero.getNumero(), time,
activiteNumero.getEntrantSortant());
try {
com.afone.rdn.entities.Numero numeroTmp = numeroDAO.getNumero(numeroActivite.getNumero());
if (!time.after(new Date((new java.util.Date()).getTime()))) {
if (null == numeroTmp) {
numeroDAO.mettreAJourNumero(numeroActivite);
} else if ((null != numeroTmp.getDateDernierTrafic())
&& (numeroTmp.getDateDernierTrafic().before(numeroActivite.getDateDernierTrafic()))) {
numeroDAO.mettreAJourNumero(numeroActivite);
}
} else {
LOGGER.warn("TraitementTransverseImpl setActivite date incorrecte numero: " + activiteNumero.getNumero()
+ " date " + activiteNumero.getDate());
}
} catch (RdnTechniqueDaoException daoE) {
throw new RdnTechniqueTraitementException(daoE);
}
}
Camel 获取 CSV 文件并处理每一行,但我们收到一些关于无效日期的随机错误,如下所示:
2015-04-09 00:34:43,906 WARN [TraitementTransverseImpl:setActiviteNumero] TraitementTransverseImpl setActivite 日期不正确编号:299999999 日期 2015 年 8 月 28 日星期五 11:06:28 CEST
我不知道如何找到问题。
问候,卢多维奇