日期问题,前端日期选择为年-月形式,如2023-03,放在NutMap中,
数据库字段为Date类型
如果我把数据直接存入数据库,会报数据类型的错误
但是这个年-月怎么才能转成标准的年-月-日形式呢?
我试着先用NutMap.gettime(str),得到CST时间,然后再转回来,类似如下代码
public static void formatDate() {
String str = "";
str = "2022-11";
NutMap map = new NutMap();
map.put("ss",str);
String formatStr = "";
try {
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
Date dd = map.getTime("ss");
Date date = (Date) sdf.parse(map.getTime("ss").toString());
formatStr = new SimpleDateFormat("yyyy-MM-dd").format(date);
System.out.println("date = " + date);
System.out.println("formatStr = " + formatStr);
}
catch (Exception es) {
es.printStackTrace();
}
System.out.println(formatStr);
}
但是问题是这样一转换,日期就错了,2022-11取出来就成了2022-01-01,请问有什么好办法吗
参考GPT和自己的思路:您好,根据您的问题描述,您想将年-月格式的日期转换成标准的年-月-日格式,但是您尝试使用 NutMap.gettime(str) 转换后结果不正确,变成了 2022-01-01。这是因为在转换的过程中使用了错误的日期格式。您可以尝试修改代码如下:
public static void formatDate() {
String str = "2022-11";
NutMap map = new NutMap();
map.put("ss", str);
String formatStr = "";
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(map.getString("ss") + "-01");
formatStr = sdf.format(date);
System.out.println("date = " + date);
System.out.println("formatStr = " + formatStr);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(formatStr);
}
首先,您要使用 yyyy-MM-dd 的日期格式来进行转换。其次,在将年-月格式的日期转换成标准的年-月-日格式时,可以将其补充为该月的第一天,即在日期末尾添加 "-01",然后再进行转换。这样即可确保转换后日期为该月的第一天。代码中使用了 try-catch 块来处理可能会出现的 ParseException 异常,同时输出转换后的 date 和 formatStr。
这个没办法,数据库里date得是年月日都有的,你现在只有年月,要么你把年和月分开,两个字段都是int,要么你用字符串存
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");是年,月,但是默认就会补一个日进去。
直接转成date 入库就行
new SimpleDateFormat("yyyy-MM")