Javaで「Tue Apr 14 04:51:40 CST 2020」形式から「2020-04-14 04:51:40」に移行する問題を解決
3204 ワード
問題:
プロジェクトの中で、穴に出会って、一晩中やったので、特に覚えています.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メソッドを生成し、後で使用します.
ツールクラスのメソッドは次のとおりです.
変換時間が必要なクラスのメソッドは次のとおりです.
それ以来、この問題は解決され、問題があれば伝言を歓迎します.もしあなたに助けがあれば、いいねを押してくれれば、私にとって最高の励ましになります.
プロジェクトの中で、穴に出会って、一晩中やったので、特に覚えています.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();
}
.........
}
それ以来、この問題は解決され、問題があれば伝言を歓迎します.もしあなたに助けがあれば、いいねを押してくれれば、私にとって最高の励ましになります.