大資料專案實戰之六:6.工具類編寫和說明
阿新 • • 發佈:2018-12-02
日期時間工具類
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 日期時間工具類 * @author Administrator * */ public class DateUtils { public static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); /** * 判斷一個時間是否在另一個時間之前 * @param time1 第一個時間 * @param time2 第二個時間 * @return 判斷結果 */ public static boolean before(String time1, String time2) { try { Date dateTime1 = TIME_FORMAT.parse(time1); Date dateTime2 = TIME_FORMAT.parse(time2); if(dateTime1.before(dateTime2)) { return true; } } catch (Exception e) { e.printStackTrace(); } return false; } /** * 判斷一個時間是否在另一個時間之後 * @param time1 第一個時間 * @param time2 第二個時間 * @return 判斷結果 */ public static boolean after(String time1, String time2) { try { Date dateTime1 = TIME_FORMAT.parse(time1); Date dateTime2 = TIME_FORMAT.parse(time2); if(dateTime1.after(dateTime2)) { return true; } } catch (Exception e) { e.printStackTrace(); } return false; } /** * 計算時間差值(單位為秒) * @param time1 時間1 * @param time2 時間2 * @return 差值 */ public static int minus(String time1, String time2) { try { Date datetime1 = TIME_FORMAT.parse(time1); Date datetime2 = TIME_FORMAT.parse(time2); long millisecond = datetime1.getTime() - datetime2.getTime(); return Integer.valueOf(String.valueOf(millisecond / 1000)); } catch (Exception e) { e.printStackTrace(); } return 0; } /** * 獲取年月日和小時 * @param datetime 時間(yyyy-MM-dd HH:mm:ss) * @return 結果 */ public static String getDateHour(String datetime) { String date = datetime.split(" ")[0]; String hourMinuteSecond = datetime.split(" ")[1]; String hour = hourMinuteSecond.split(":")[0]; return date + "_" + hour; } /** * 獲取當天日期(yyyy-MM-dd) * @return 當天日期 */ public static String getTodayDate() { return DATE_FORMAT.format(new Date()); } /** * 獲取昨天的日期(yyyy-MM-dd) * @return 昨天的日期 */ public static String getYesterdayDate() { Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); cal.add(Calendar.DAY_OF_YEAR, -1); Date date = cal.getTime(); return DATE_FORMAT.format(date); } /** * 格式化日期(yyyy-MM-dd) * @param date Date物件 * @return 格式化後的日期 */ public static String formatDate(Date date) { return DATE_FORMAT.format(date); } /** * 格式化時間(yyyy-MM-dd HH:mm:ss) * @param date Date物件 * @return 格式化後的時間 */ public static String formatTime(Date date) { return TIME_FORMAT.format(date); } }
================================================================================================
數字格式工具類
import java.math.BigDecimal; /** * 數字格式工具類 * @author Administrator * */ public class NumberUtils { /** * 格式化小數 * @param num 傳入的數字 * @param scale 四捨五入的位數 * @return 格式化小數 */ public static double formatDouble(double num, int scale) { BigDecimal bd = new BigDecimal(num); return bd.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } }
================================================================================================
引數工具類
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; /** * 引數工具類 * @author Administrator * */ public class ParamUtils { /** * 從命令列引數中提取任務id * @param args 命令列引數 * @return 任務id */ public static Long getTaskIdFromArgs(String[] args) { try { if(args != null && args.length > 0) { return Long.valueOf(args[0]); } } catch (Exception e) { e.printStackTrace(); } return null; } /** * 從JSON物件中提取引數 * @param jsonObject JSON物件 * @return 引數 */ public static String getParam(JSONObject jsonObject, String field) { JSONArray jsonArray = jsonObject.getJSONArray(field); if(jsonArray != null && jsonArray.size() > 0) { return jsonArray.getString(0); } return null; } }
================================================================================================
字串工具類
/**
* 字串工具類
* @author Administrator
*
*/
public class StringUtils {
/**
* 判斷字串是否為空
* @param str 字串
* @return 是否為空
*/
public static boolean isEmpty(String str) {
return str == null || "".equals(str);
}
/**
* 判斷字串是否不為空
* @param str 字串
* @return 是否不為空
*/
public static boolean isNotEmpty(String str) {
return str != null && !"".equals(str);
}
/**
* 截斷字串兩側的逗號
* @param str 字串
* @return 字串
*/
public static String trimComma(String str) {
if(str.startsWith(",")) {
str = str.substring(1);
}
if(str.endsWith(",")) {
str = str.substring(0, str.length() - 1);
}
return str;
}
/**
* 補全兩位數字
* @param str
* @return
*/
public static String fulfuill(String str) {
if(str.length() == 2) {
return str;
} else {
return "0" + str;
}
}
/**
* 從拼接的字串中提取欄位
* @param str 字串
* @param delimiter 分隔符
* @param field 欄位
* @return 欄位值
*/
public static String getFieldFromConcatString(String str,
String delimiter, String field) {
String[] fields = str.split(delimiter);
for(String concatField : fields) {
String fieldName = concatField.split("=")[0];
String fieldValue = concatField.split("=")[1];
if(fieldName.equals(field)) {
return fieldValue;
}
}
return null;
}
/**
* 從拼接的字串中給欄位設定值
* @param str 字串
* @param delimiter 分隔符
* @param field 欄位名
* @param newFieldValue 新的field值
* @return 欄位值
*/
public static String setFieldInConcatString(String str,
String delimiter, String field, String newFieldValue) {
String[] fields = str.split(delimiter);
for(int i = 0; i < fields.length; i++) {
String fieldName = fields[i].split("=")[0];
if(fieldName.equals(field)) {
String concatField = fieldName + "=" + newFieldValue;
fields[i] = concatField;
break;
}
}
StringBuffer buffer = new StringBuffer("");
for(int i = 0; i < fields.length; i++) {
buffer.append(fields[i]);
if(i < fields.length - 1) {
buffer.append("|");
}
}
return buffer.toString();
}
}
================================================================================================
校驗工具類
/**
* 校驗工具類
* @author Administrator
*
*/
public class ValidUtils {
/**
* 校驗資料中的指定欄位,是否在指定範圍內
* @param data 資料
* @param dataField 資料欄位
* @param parameter 引數
* @param startParamField 起始引數欄位
* @param endParamField 結束引數欄位
* @return 校驗結果
*/
public static boolean between(String data, String dataField,
String parameter, String startParamField, String endParamField) {
String startParamFieldStr = StringUtils.getFieldFromConcatString(
parameter, "\\|", startParamField);
String endParamFieldStr = StringUtils.getFieldFromConcatString(
parameter, "\\|", endParamField);
if(startParamFieldStr == null || endParamFieldStr == null) {
return true;
}
int startParamFieldValue = Integer.valueOf(startParamFieldStr);
int endParamFieldValue = Integer.valueOf(endParamFieldStr);
String dataFieldStr = StringUtils.getFieldFromConcatString(
data, "\\|", dataField);
if(dataFieldStr != null) {
int dataFieldValue = Integer.valueOf(dataFieldStr);
if(dataFieldValue >= startParamFieldValue &&
dataFieldValue <= endParamFieldValue) {
return true;
} else {
return false;
}
}
return false;
}
/**
* 校驗資料中的指定欄位,是否有值與引數欄位的值相同
* @param data 資料
* @param dataField 資料欄位
* @param parameter 引數
* @param paramField 引數欄位
* @return 校驗結果
*/
public static boolean in(String data, String dataField,
String parameter, String paramField) {
String paramFieldValue = StringUtils.getFieldFromConcatString(
parameter, "\\|", paramField);
if(paramFieldValue == null) {
return true;
}
String[] paramFieldValueSplited = paramFieldValue.split(",");
String dataFieldValue = StringUtils.getFieldFromConcatString(
data, "\\|", dataField);
if(dataFieldValue != null) {
String[] dataFieldValueSplited = dataFieldValue.split(",");
for(String singleDataFieldValue : dataFieldValueSplited) {
for(String singleParamFieldValue : paramFieldValueSplited) {
if(singleDataFieldValue.equals(singleParamFieldValue)) {
return true;
}
}
}
}
return false;
}
/**
* 校驗資料中的指定欄位,是否在指定範圍內
* @param data 資料
* @param dataField 資料欄位
* @param parameter 引數
* @param paramField 引數欄位
* @return 校驗結果
*/
public static boolean equal(String data, String dataField,
String parameter, String paramField) {
String paramFieldValue = StringUtils.getFieldFromConcatString(
parameter, "\\|", paramField);
if(paramFieldValue == null) {
return true;
}
String dataFieldValue = StringUtils.getFieldFromConcatString(
data, "\\|", dataField);
if(dataFieldValue != null) {
if(dataFieldValue.equals(paramFieldValue)) {
return true;
}
}
return false;
}
}