SpringBoot受信先日付が不正確な問題

1739 ワード

最近問題が発生しました.データベースフィールドはdatetimeで、フロントエンドformフォームを直接展示してから入庫しました.結果は日付が自分で変わりました.あるいは日付が一日増えたか、それとも時間が二時間増えました.
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】