Javaで「Tue Apr 14 04:51:40 CST 2020」形式から「2020-04-14 04:51:40」に移行する問題を解決


問題:
プロジェクトの中で、穴に出会って、一晩中やったので、特に覚えています.Mysqlが照会した時刻はTue Apr 14 04:51:40 CST 2020というフォーマットで、ページ使用で2020-04-14 04:51:40と表示できるようになっていますが、この時間はsqlの照会条件としてdaoに渡されてから問題があります.多くの資料を調べて、自分で使ってもだめです.これはアメリカ式の時間なので、ネット上の方法を使って2020-04-14 04:51:40になっても時差があることに気づきました.自分でプロジェクトコードを調べてみると、このような実装がこのような問題を処理できることに気づき、参考にすることができます.
環境の説明:
Mysqlデータベース、アリクラウド上のdrds.この時間フィールドはデータベース内でDatetime時間フォーマットであり、エンティティクラスではStringタイプである.
問題解決:
次のように構成されています.
1.Mysqlデータベース:STATISTICS_DATE--タイプDatetime--統計時間
2.Pojo: StockDetailQuery.java
シナリオは、POJOがいくつかのフィールドを以下のように定義してから、getterメソッドとsetterメソッドを生成し、後で使用します.
String statisticsDate; //    

/**
     *       
     */
    private String  date1;
    private String  date2;
    private String  date3;
    private String  date4;

    private String  ptime1;
    private String  ptime2;
    private String  ptime3;
    private String  ptime4;
   /**
     * getters and setters
     */

   public String getDate1() {
        return date1;
    }

    public void setDate1(String date1) {
        this.date1 = date1;
    }

      getter setter    

ツールクラスのメソッドは次のとおりです.
/**
     *     
     */
    public StockDetailQuery getDateTime(StockDetailQuery query) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        //   
        Date d1 = new Date();
        Calendar instance = Calendar.getInstance();
        String dateTime = "";
        instance.setTime(d1);
        //  
        instance.set(Calendar.HOUR_OF_DAY, 0);
        //  
        instance.set(Calendar.MINUTE, 0);
        //  
        instance.set(Calendar.SECOND, 0);

        dateTime = sdf.format(instance.getTime());
        query.setPtime1(dateTime);
        //    
        instance.add(Calendar.DATE, 1);
        dateTime = sdf.format(instance.getTime());
        query.setPtime2(dateTime);
        //    
        instance.add(Calendar.DATE, 1);
        dateTime = sdf.format(instance.getTime());
        query.setPtime3(dateTime);
        //    
        instance.add(Calendar.DATE, 1);
        dateTime = sdf.format(instance.getTime());
        query.setPtime4(dateTime);
        return query;
    }

変換時間が必要なクラスのメソッドは次のとおりです.
@RequestMapping(value = "stockNumberQuery")
    public String stockNumberQuery(@ModelAttribute("query") StockDetailQuery query, HttpServletRequest request,
        Model model) {      

       //      
        getDateTime(query);

        //    STATISTICS_DATE
        String pattern = "EEE MMM dd HH:mm:ss zzz yyyy";
        SimpleDateFormat df = new SimpleDateFormat(pattern, Locale.US);
        try {
            Date date = df.parse(query.getStatisticsDate());
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String dateString = simpleDateFormat.format(date);
            //      STATISTICS_DATE      
            query.setStatisticsDate(dateString);
        }
        catch (ParseException e) {
            e.printStackTrace();
        }

      .........

}

それ以来、この問題は解決され、問題があれば伝言を歓迎します.もしあなたに助けがあれば、いいねを押してくれれば、私にとって最高の励ましになります.