java字串日期處理工具類
最後更新:2018-07-26
來源:互聯網
上載者:User
package com.newer;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* <h1>常用工具類</h1>
* 1.字串常用操作 <br>
* 2.日期時間操作 <br>
* 提供靜態方法,不可以執行個體化。
* @author RSun
* @date 2012-2-26下午03:58:06
*/
@SuppressWarnings("rawtypes")
public class StrUtil {
/** 禁止執行個體化 **/
private StrUtil() {
}
/**
* 檢查字串是否為null或者為空白串<br>
* 為空白串或者為null返回true,否則返回false
*/
public static boolean isNullOrEmpty(String str) {
boolean result = true;
if (str != null && !"".equals(str.trim())) {
result = false;
}
return result;
}
/**
* 判斷數組是否為null或者size為0 <br>
* 為null或size為0時返回true,否則返回false
* @param obj
* @return
*/
public static boolean isArrayNull(Object[] obj) {
if(obj == null || obj.length <= 0){
return true;
}
return false;
}
/**
* 判斷list是否為null或者size為0 <br>
* 為null或size為0時返回true,否則返回false
* @return
*/
public static boolean isListNull(List list){
if(list == null || list.size() <= 0){
return true;
}
return false;
}
/**
* 檢查字串是否為null或者為"null"<br>
* 為null或者為"null",返回"",否則返回字串 <br>
* 用於處理資料庫查詢資料
*/
public static String getCleanString(Object obj){
if( obj == null ){
return "";
}else if(String.valueOf(obj).equals("null")){
return "";
}else{
return String.valueOf(obj);
}
}
/**
* 檢查整形資料是否為null<br>
* 為null,返回0,否則返回原值 <br>
* 用於處理資料庫查詢資料
*/
public static int getCleanInteger(Object obj){
if( obj == null ){
return 0;
}else{
return Integer.parseInt((String)obj);
}
}
/**
* 檢查float資料是否為null<br>
* 為null,返回0,否則返回原值 <br>
* 用於處理資料庫查詢資料
*/
public static float getCleanFloat(Object obj){
if( obj == null ){
return 0f;
}else{
return Float.parseFloat((String)obj);
}
}
/**
* 數群組轉換為字串 <br>
* 轉換失敗或數組為null,返回""
* @param strArray 要轉換的數組
* @param split 分割符
* @return
*/
public static String strArrayByStr(Object[] strArray, String split) {
// return StringUtils.join(strArray, split);
StringBuilder ss = new StringBuilder();
for (int i=0, len = (strArray == null ? 0 : strArray.length); i<len; i++) {
if(i > 0) ss.append(split);
ss.append(strArray[i]);
}
return ss.toString();
}
/**
* 兩個字串取不為null的值,都為null則返回""
* @param str1
* @param str2
* @return 優先返回str1
*/
public static String emailOrAlias(String str1, String str2) {
String str = getCleanString(str1);
if(null == str1 || "".equals(str1)){
str = getCleanString(str2);
}
return str;
}
// ================================ 日期常用方法 =============================
/** 擷取目前時間戳 **/
public static String getTimeStamp() {
String timeStamp = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
return timeStamp;
}
/** 獲得本周第一天時間(yyyy-MM-dd) **/
public static String getMonOfWeek(){
// Calendar c = new GregorianCalendar();
// c.setFirstDayOfWeek(Calendar.MONDAY);
// c.setTime(new Date());
// c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_WEEK, c.getActualMinimum(Calendar.DAY_OF_WEEK));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String str = sdf.format(c.getTime());
return str;
}
/** 獲得本周的最後一天(yyyy-MM-dd) **/
public static String getSunOfWeek(){
// Calendar c = new GregorianCalendar();
// c.setFirstDayOfWeek(Calendar.MONDAY);
// c.setTime(new Date());
// c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6);
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_WEEK, c.getActualMaximum(Calendar.DAY_OF_WEEK));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String str = sdf.format(c.getTime());
return str;
}
/** 獲得當月的第一天(yyyy-MM-dd) **/
public static String getFirstDayOfMonth(){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String str=sdf.format(cal.getTime());
return str;
}
/** 獲得當月的最後一天(yyyy-MM-dd) **/
public static String getLastDayOfMonth(){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
SimpleDateFormat sdfs=new SimpleDateFormat("yyyy-MM-dd");
String str=sdfs.format(cal.getTime());
return str;
}
/**
* 根據時間擷取相差天、小時數的新時間
* @param date 參照時間
* @param type 天或小時[d/h](大小寫敏感)
* @param num 差值,例如:2表示之後2天或小時,-2表示之前2天或小時
* @return
*/
public static Date getNextDay(Date date, char type, int num) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
switch (type) {
case 'd':
calendar.add(Calendar.DAY_OF_MONTH, num);
break;
case 'h':
calendar.add(Calendar.HOUR_OF_DAY, num);
break;
default:
break;
}
date = calendar.getTime();
return date;
}
/**
* 比較兩個時間的相差值(d1與d2)
* @param d1 時間一
* @param d2
* @param type 類型【h/m/s】(大小寫敏感)
* @return d1-d2,表示d1比d2早或晚xxx
*/
public static long compareDate(Date d1, Date d2, char type) {
long num = d1.getTime() - d2.getTime();
num/=1000;
if('m' == type){
num/=60;
}else if ('h' == type) {
num/=3600;
}
return num;
}
/**
* 格式化時間,時間轉字串
* @param date null則為當前系統時間
* @param format 格式,null則預設為:'yyyy-MM-dd HH:mm:ss'
* @return 字串格式的日期
*/
public static String getDateTimeByStr(Date date, String format) {
if(date == null)
date = new Date();
if(format == null)
format = "yyyy-MM-dd HH:mm:ss";
return new SimpleDateFormat(format).format(date);
}
/**
* 格式化時間,字串轉時間
* @param dataStr 需要轉換的字串
* @param format 格式,null則預設為:'yyyy-MM-dd HH:mm:ss'
* @return 轉換的Date
*/
public static Date getStrByDataTime(String dataStr, String format) {
if(dataStr == null)
return new Date();
if (format == null)
format = "yyyy-MM-dd HH:mm:ss";
DateFormat sdf = new SimpleDateFormat(format);
Date date = null;
try {
date = sdf.parse(dataStr);
} catch (Exception e) {
e.printStackTrace();
}
return date;
}
// ================================ 其他常用方法 =============================
/**
* 從number數值中隨機抽取count個數字
* @param count 要抽取的數值個數
* @param number 數字範圍為 (0, number]
* @return
*/
public static int[] randomNumber(int count, int number) {
int k=count, n=number;
int[] numbers = new int[n];
for (int i = 0; i < numbers.length; i++)
numbers[i] = i + 1;
int[] result = new int[k];
for (int i = 0; i < result.length; i++){
int r = (int) (Math.random() * n);
result[i] = numbers[r];
numbers[r] = numbers[n - 1];
n--;
}
// Arrays.sort(result);
// for (int r : result)
// System.out.println(r);
return result;
}
}