SpringBoot受信先日付が不正確な問題
1739 ワード
最近問題が発生しました.データベースフィールドはdatetimeで、フロントエンドformフォームを直接展示してから入庫しました.結果は日付が自分で変わりました.あるいは日付が一日増えたか、それとも時間が二時間増えました.
request.get Parterで得られたパラメータとspringBoot自身がカプセル化したcreateDate(java Dateタイプ)以降のパラメータは同じではありません.
request.get Parterが取得した値は先端と同じで、正しいです.このため、問題がspringBootパラメータとしてDateタイプに変換されたときにエラーが発生しました.
解決方法:パラメータの日付変換器をカスタマイズします.
もっと良い解決方法があれば、あるいは本文に間違いがあります.ご指摘ください.
【四川楽山プログラマー連盟、皆さんの交流学習を歓迎します.5 7 1 8 1 4 4 3】
request.get Parterで得られたパラメータとspringBoot自身がカプセル化したcreateDate(java Dateタイプ)以降のパラメータは同じではありません.
request.get Parterが取得した値は先端と同じで、正しいです.このため、問題がspringBootパラメータとしてDateタイプに変換されたときにエラーが発生しました.
解決方法:パラメータの日付変換器をカスタマイズします.
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
/**
*
* , date
*/
@Configuration
public class DateConverConfig {
@Bean
public Converter stringDateConvert() {
return new Converter() {
@Override
public Date convert(String source) {
//yyyy-MM-dd HH:mm:ss Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = sdf.parse((String) source);
} catch (Exception e) {
//yyyy-MM-dd Date
sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
date = sdf.parse((String) source);
} catch (ParseException e1) {
//EEE MMM dd HH:mm:ss Z yyyy Date
sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK);
try {
date = sdf.parse((String) source);
} catch (ParseException e2) {
e2.printStackTrace();
}
}
}
return date;
}
};
}
}
これで日にちの変化が解決できます.もっと良い解決方法があれば、あるいは本文に間違いがあります.ご指摘ください.
【四川楽山プログラマー連盟、皆さんの交流学習を歓迎します.5 7 1 8 1 4 4 3】