時間戳,字符串轉換小工具

  今天在堆代碼的時候想實現將數據庫的數據通過週報,月報的形式在頁面上通過圖標顯示。發現數據庫中存儲的是字符串型的時間戳,所以簡單的寫了一個數據類型轉換工具類來進行數據類型轉換。

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;
	}
}

發佈了33 篇原創文章 · 獲贊 12 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章