Java SimpleDataFormat工作不正常
这是我的第一篇帖子,是关于一个让我担心了一个多星期却没有得到有用答案的问题。我在带有hibernate和spring的表单(JSP)上有一个日期选择器,下面是“表单”标记: 最后一种方法是:Java SimpleDataFormat工作不正常,java,spring,hibernate,date,datetime,Java,Spring,Hibernate,Date,Datetime,这是我的第一篇帖子,是关于一个让我担心了一个多星期却没有得到有用答案的问题。我在带有hibernate和spring的表单(JSP)上有一个日期选择器,下面是“表单”标记: 最后一种方法是: public int comparaFecha(String fechaInit, String fechaFin) { int salida = -2; try { logger.info("FECHA INICIO: "+fechaInit); Strin
public int comparaFecha(String fechaInit, String fechaFin) {
int salida = -2;
try {
logger.info("FECHA INICIO: "+fechaInit);
String pattern = "dd-MM-yyyy";
SimpleDateFormat format = new SimpleDateFormat(pattern);
logger.info("salida = dat2.compareTo(dat1);"+fechaFin.compareTo(fechaInit));
Date dat1 = format.parse(fechaInit);
logger.info("Fecha INicio Formateada: "+dat1);
Date dat2 = format.parse(fechaFin);
salida = dat2.compareTo(dat1);
//salida = fechaFin.compareTo(fechaInit);
} catch (Exception e) {
logger.error("Error al comparar la fecha metodo utils "
+ e.getMessage());
e.printStackTrace();
}
return salida;
}
好的,现在我的问题是:
当我选择一个日期时,例如:2018年3月26日为开始日期,2020年3月28日为结束日期,当我保存该日期并单击编辑该日期时,它将显示2020年3月2日为开始日期,2022年3月2日为结束日期,当我从表单中获取日期时,该格式是:2018年3月26日
当我用模式“dd/MM/yyyy”解析它时,它会给我一个结果:“mmmdd,yyyy hh:MM:ss a”
然后,它将日期从最初的日期改为大约6个月,最多改为2年
有什么帮助吗?您使用了一种模式,其中月份是第二个参数(西班牙语日期格式): 您需要使用月/日:
String pattern = "MM-dd-yyyy";
或 以正确的格式插入日期:
26/03/2018 as starting date and
28/03/2020 as ending date
或
用于使解析器严格,然后引发异常
03/28/2020
看起来像是MM/dd/yyyy
,但您正在使用dd/MM/yyyyy
对其进行解析?28和26当然不是月数。当你遇到问题时,最好生成一个[mvce],而不是转储100行不相关的代码。
@Autowired
TABLE_DATEDAO tABLE_DATEDAO;
@Override
public int add(NewForm newForm) {
TABLE_DATE tABLE_DATE = new TABLE_DATE();
// System.out.println("FORMATO FECHA +newForm.getAgregar_fechainicio());
try {
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
tABLE_DATE.setFechainicio(dateFormat
.parse(newForm
.getAgregar_fechainicio())); // *
tABLE_DATE.setFechatermino(dateFormat
.parse(newForm
.getAgregar_fechatermino())); // *
total = dateFormat.parse(
newForm.getAgregar_fechainicio())
.compareTo(
dateFormat.parse(newForm
.getAgregar_fechatermino()));
Date date = new Date();
tABLE_DATE.setFechacreacion(dateFormat.parse(dateFormat
.format(date)));
// System.out.println("FORMATO FECHA "+dateFormat.parse(dateFormat.format(date)));
} catch (Exception e) {
e.printStackTrace();
System.out.println("Wrong at date service method: "+e.getMessage());
}
return tABLE_DATEDAO.add(tABLE_DATE);
}
public int comparaFecha(String fechaInit, String fechaFin) {
int salida = -2;
try {
logger.info("FECHA INICIO: "+fechaInit);
String pattern = "dd-MM-yyyy";
SimpleDateFormat format = new SimpleDateFormat(pattern);
logger.info("salida = dat2.compareTo(dat1);"+fechaFin.compareTo(fechaInit));
Date dat1 = format.parse(fechaInit);
logger.info("Fecha INicio Formateada: "+dat1);
Date dat2 = format.parse(fechaFin);
salida = dat2.compareTo(dat1);
//salida = fechaFin.compareTo(fechaInit);
} catch (Exception e) {
logger.error("Error al comparar la fecha metodo utils "
+ e.getMessage());
e.printStackTrace();
}
return salida;
}
String pattern = "dd-MM-yyyy";
String pattern = "MM-dd-yyyy";
26/03/2018 as starting date and
28/03/2020 as ending date