今天在堆代碼的時候想實現將數據庫的數據通過週報,月報的形式在頁面上通過圖標顯示。發現數據庫中存儲的是字符串型的時間戳,所以簡單的寫了一個數據類型轉換工具類來進行數據類型轉換。
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; public class DataConvertUtil { //一天的毫秒數 public static final long ONE_DAY_MILLIS = 24 * 3600000; /** * 時間戳轉字符串顯示 * * @param timestamp 要轉換的時間戳 * @param format 轉換格式 * @return 轉換後字符串 */ public static String Timestamp2String(String timestamp,String format){ String result = ""; if(timestamp != null && !timestamp.equals("")){ String temp = "yyyy-MM-dd HH:mm:ss"; if(format != null && !format.equals("")){ temp = format; } Date date = new Date(Long.valueOf(timestamp)); SimpleDateFormat sdf = new SimpleDateFormat(temp); result = sdf.format(date); } return result; } /** * 字符串轉時間戳 * * @param string 要轉換的字符串 * @param format 轉換格式 * @return 轉換後的時間戳 */ public static String String2Timestamp(String string,String format){ String result= ""; if(string != null && !string.equals("")){ String temp = "yyyy-MM-dd HH:mm:ss"; if(format != null && !format.equals("")){ temp = format; } SimpleDateFormat sdf = new SimpleDateFormat(temp); try { Date date = sdf.parse(string); result = String.valueOf(date.getTime()); } catch (ParseException e) { ARE.getLog().error("DataConvertUtil類生成日期類型失敗"); return result; } } return result; } /** * 根據時間戳轉化成對應周的某一天的時間戳 * * @param timestamp 基準時間戳 * @param dayNumber 1-7對應週一到週日 * @param format 轉化過程中解析格式,默認"yyyy-MM-dd HH:mm:ss" * @param option 特殊配置參數,0表示時分秒均爲零,1表示24時0分0秒 * @return 對應日期的時間戳 */ public static String Timestamp2WeekDate(String timestamp,int dayNumber,String format,String option) { String result = ""; if(timestamp != null && !timestamp.equals("")){ String temp = "yyyy-MM-dd HH:mm:ss"; if(format != null && !format.equals("")){ temp = format; } Date date = new Date(Long.valueOf(timestamp)); int currentNumber = date.getDay(); Date targetDate = new Date(); targetDate.setTime(date.getTime() + (dayNumber - currentNumber) * ONE_DAY_MILLIS); SimpleDateFormat sdf = new SimpleDateFormat(temp); String dateString = sdf.format(targetDate); if("0".equals(option)){ dateString = dateString.split(" ")[0] + " 00:00:00"; } if("1".equals(option)){ dateString = dateString.split(" ")[0] + " 24:00:00"; } try { System.out.println("DataConvertUtil:"+dateString); result = String.valueOf(sdf.parse(dateString).getTime()); } catch (ParseException e) { ARE.getLog().error("DataConvertUtil類生成日期類型失敗"); return result; } } return result; } /** * 根據時間戳轉化成某月的第一天 * * @param timestamp 基準時間戳 * @param format 轉化過程中解析格式,默認"yyyy-MM-dd HH:mm:ss" * @param offset 對應當前月的相對偏移量 * @return 對應日期的時間戳 */ public static String Timestamp2MonthFirstDay(String timestamp,String format,int offset){ String result = ""; if(timestamp != null && !timestamp.equals("")){ String temp = "yyyy-MM-dd HH:mm:ss"; if(format != null && !format.equals("")){ temp = format; } Date date = new Date(Long.valueOf(timestamp)); SimpleDateFormat sdf = new SimpleDateFormat(temp); String yearMonth = sdf.format(date).replaceAll("-\\d{2} .*", ""); String year = yearMonth.split("-")[0]; String month = yearMonth.split("-")[1]; if(month.contains("0")){ month = month.substring(1, 2); } int tempMonth = Integer.valueOf(month) + offset%12; year = String.valueOf(Integer.valueOf(year) + offset/12); month = String.valueOf(tempMonth); if(tempMonth > 12){ year = String.valueOf(Integer.valueOf(year) + 1); month = String.valueOf(tempMonth%12); } if(tempMonth <= 0){ year = String.valueOf(Integer.valueOf(year) - 1); month = String.valueOf(tempMonth+12); } result = year + "-" + (month.length()>1?month:("0"+month)) + "-00 00:00:00"; } return result; } }