1,文字列とnullの結合,2,データベースで検索したタイムスタンプを年月日に変換
1,文字列とnullの結合,2,データベースで検索したタイムスタンプを年月日に変換
データベースで調べたフィールドがnullの場合、固定文字列をつなぐ必要があります.次のようにします.
ここのparameterはnullの可能性があり、nullの場合、出力文字列は
簡単に使えば、まあまあだと思います
データベースで調べたフィールドがnullの場合、固定文字列をつなぐ必要があります.次のようにします.
String s ;
if(parameter == null) {
s = " " ;
} else {
s = " " + "," + parameter;
}
ここのparameterはnullの可能性があり、nullの場合、出力文字列は
,null
になります.何度も考えてみたが、テストの結果はparameterだった.equals(null)はfalse,parameter.==を返します.nullはtrueを返します.すなわち,このparameterは受信データベースで検出された変数としてnullの値であってもアドレスが割り当てられている.私のここでの処理方法はorgを使いました.apache.commons.lang 3パッケージにはisNotEmptyメソッドがあり、ソースコードを表示すると、このメソッドが入力した文字列に対して処理されていることがわかります:!(str == null || str.length == 0);
2つ目の問題はデータベースのタイムスタンプ変換の問題で、需要は3日以内にxx秒前、xx銭、xx時間前と表示されます.三日を超える日を年月日形式に変換し、直接コードを登録する public static String timestamp2Date(Object time) {
String resultTime;
LocalDate datetime = Instant.ofEpochMilli(((Timestamp) time).getTime()).atZone(ZoneId.systemDefault()).toLocalDate(); // localDate,
if (datetime.isAfter(LocalDate.now().plusDays(-3))) {
resultTime = calculateTime(((Timestamp) time));
} else {
resultTime = datetime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}
return resultTime;
}
/**
* ,
*/
public static String calculateTime(Timestamp time) {
//
long nowTime = System.currentTimeMillis();
String msg;
// , , else msg
//
long reset = time.getTime();
long dateDiff = nowTime - reset;
if (dateDiff < 0) {
msg = " ";
} else {
//
long dateTemp1 = dateDiff / 1000;
//
long dateTemp2 = dateTemp1 / 60;
//
long dateTemp3 = dateTemp2 / 60;
//
long dateTemp4 = dateTemp3 / 24;
//
long dateTemp5 = dateTemp4 / 30;
//
long dateTemp6 = dateTemp5 / 12;
if (dateTemp6 > 0) {
msg = dateTemp6 + " ";
} else if (dateTemp5 > 0) {
msg = dateTemp5 + " ";
} else if (dateTemp4 > 0) {
msg = dateTemp4 + " ";
} else if (dateTemp3 > 0) {
msg = dateTemp3 + " ";
} else if (dateTemp2 > 0) {
msg = dateTemp2 + " ";
} else if (dateTemp1 > 0) {
msg = " ";
} else {
msg = " ";
}
}
return msg;
}
簡単に使えば、まあまあだと思います