开发问题:日期格式问题 Failed to convert value of type 'java.lang.String' to required type 'java.util.Date';
后台接收Date数据,用String 类型接收,写入时转换格式
String-》Date,先进行格式修改,再利用parse转换为Date
java.text.SimpleDateFormat ft = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); Date date=ft.parse(businessDate);
传输数据格式与前台数据相同
Date->String
String dString=ft.format(data);
遇到Unparseable date:“2021-08-08”
前端传来的数据结构与,设置的结构不相同,报错。
转换成"yyyy-MM-dd"格式
// 设置日期格式
//SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
java.text.SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
Date data=ft.parse(businessDate);
String dString=ft.format(data);
Date date=java.sql.Date.valueOf(dString);
问题二:
报错信息:Oracle ORA-01861: 文字与格式字符串不匹配
原因:数据库中参数数据类型为varchar,而查询传递的参数为date类型,
时间计算
Date date1=new Date(time1.getTime()); Date date2=new Date(time2.getTime()); // 单位确定到分钟 planTime=(date2.getTime()-date1.getTime())/1000/60;
String转换为Date类型
private static final String 时间格式= "yyyy-MM-dd"; DateUtils.parseDate(String类型时间, 时间格式)
传递带时间json时报错
前端传json中包含日期,后端报错,Could not read document
排查后发现在创建实体类时,对应日期没有加注释
注释如下:
/** *日期 */ @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd") @Column(name = "S_DATE") private Date sDate;
取两时间之间的数据:
x.andGreaterThanOrEqualTo(ClassUtil.getPropertyName(实体类名.class,实体类名::字段get方法), startDate + " 00:00:00"); x.andLessThanOrEqualTo(ClassUtil.getPropertyName(实体类名.class,实体类名::字段个体方法), endDate + " 23:59:59");
取两日期中间所有的日期
Calendar startDate=Calendar.getInstance(); startDate.setTime(Date1); startDate.add(Calendar.DAY_OF_YEAR,-4); List<Date> dates=new ArrayList<>(); Calendar tempStart=Calendar.getInstance(); tempStart.setTime(startDate.getTime()); Calendar tempEnd=Calendar.getInstance(); tempEnd.setTime(Date2); tempEnd.add(Calendar.DATE,+1); while(tempStart.before(tempEnd)){ dates.add(tempStart.getTime()); tempStart.add(Calendar.DAY_OF_YEAR,1); }
根据日期获得星期:
// 根据日期获得星期 String[] weekDays={"周日","周一","周二","周三","周四","周五","周六"}; Calendar cal=Calendar.getInstance(); cal.setTime(parseDate); int w=cal.get(Calendar.DAY_OF_WEEK)-1; if (w<0) { w=0; } String weekDay=weekDays[w]; System.out.println(weekDay);