1. 程式人生 > >java Calendar 日期獲取工具類,昨日開始時間,昨日結束時間,當前週週一日期,當前時間上月第一天,獲取當前年第一天

java Calendar 日期獲取工具類,昨日開始時間,昨日結束時間,當前週週一日期,當前時間上月第一天,獲取當前年第一天

package com.ig.common.util;
/**
 * 日期工具類
* Created by ccon 2015/9/9.
 */
import java.text.DateFormat;
import java.text.ParseException;
import java.util.*;
import java.text.SimpleDateFormat;
public class DateUtil {

    /**
     * 獲取SimpleDateFormat
     * @param parttern 日期格式
* @return SimpleDateFormat物件
* @throws RuntimeException 異常:非法日期格式 */ public static SimpleDateFormat getDateFormat(String parttern) throws RuntimeException { return new SimpleDateFormat(parttern); } /** * 獲取昨天凌晨時間 * @return */ public static Date getYesterdayStart () throws ParseException { SimpleDateFormat sdf = new
SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(calendar.DATE, -1); date = calendar.getTime(); SimpleDateFormat format = getDateFormat("yyyy-MM-dd"); StringBuffer time = new StringBuffer(); String dateString = format.format(date);
time.append(dateString).append(" ").append("00:00:00"); return sdf.parse(time.toString()); } /** * 獲取昨天最後時間 * @return */ public static Date getYesterdayEnd () throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(calendar.DATE, -1); date = calendar.getTime(); SimpleDateFormat format = getDateFormat("yyyy-MM-dd"); StringBuffer time = new StringBuffer(); String dateString = format.format(date); time.append(dateString).append(" ").append("23:59:59"); return sdf.parse(time.toString()); } public static Date getToday () throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.parse(sdf.format(new Date())); } /** * 獲取當前週週一日期 * @param date * @return * @throws ParseException */ public static Date getThisWeek (Date date) throws ParseException { int weeks = 0; int mondayPlus = Calendar.getInstance().get(Calendar.DAY_OF_WEEK); GregorianCalendar currentDate = new GregorianCalendar(); currentDate.add(GregorianCalendar.DATE, mondayPlus-8); Date monday = currentDate.getTime(); DateFormat df = DateFormat.getDateInstance(); String perMonday = df.format(monday); return df.parse(perMonday); } /** * 獲取當前月的第一天 * @param date * @return * @throws ParseException */ public static Date getThisMonth (Date date) throws ParseException { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH, 0); calendar.set(Calendar.DAY_OF_MONTH, 1); SimpleDateFormat sdf = getDateFormat("yyyy-MM-dd"); String first = sdf.format(calendar.getTime()); return sdf.parse(first); } /** * 獲取當前時間上月第一天 * @param date * @return * @throws ParseException */ public static Date getLastMonth (Date date) throws ParseException { Calendar cal_1=Calendar.getInstance(); cal_1.add(Calendar.MONTH, -1); SimpleDateFormat format = getDateFormat("yyyy-MM-dd"); //設定為1,當前日期既為本月第一天 cal_1.set(Calendar.DAY_OF_MONTH,1); String firstDay = format.format(cal_1.getTime()); return format.parse(firstDay); } /** * 獲取後面30* @param date * @return */ public static Date getOneMonth (Date date,int num) throws ParseException { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH, num); return calendar.getTime(); } /** * 獲取當前年第一天 * @return */ public static Date getCurrYearFirst(){ Calendar currCal=Calendar.getInstance(); int currentYear = currCal.get(Calendar.YEAR); return getYearFirst(currentYear); } public static Date getYearFirst(int year){ Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.set(Calendar.YEAR, year); Date currYearFirst = calendar.getTime(); return currYearFirst; } /** * 獲取日期中的某數值。如獲取月份 * @param date 日期 * @param dateType 日期格式 * @return 數值 */ public static int getInteger(Date date, int dateType) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar.get(dateType); } /** * 增加日期中某型別的某數值。如增加日期 * @param date 日期字串 * @param dateType 型別 * @param amount 數值 * @return 計算後日期字串 */ public static String addInteger(String date, int dateType, int amount) { String dateString = null; DateStyle dateStyle = getDateStyle(date); if (dateStyle != null) { Date myDate = StringToDate(date, dateStyle); myDate = addInteger(myDate, dateType, amount); dateString = DateToString(myDate, dateStyle); } return dateString; } /** * 增加日期中某型別的某數值。如增加日期 * @param date 日期 * @param dateType 型別 * @param amount 數值 * @return 計算後日期 */ public static Date addInteger(Date date, int dateType, int amount) { Date myDate = null; if (date != null) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(dateType, amount); myDate = calendar.getTime(); } return myDate; } /** * 獲取精確的日期 * @param timestamps 時間long集合 * @return 日期 */ public static Date getAccurateDate(List<Long> timestamps) { Date date = null; long timestamp = 0; Map<Long, long[]> map = new HashMap<Long, long[]>(); List<Long> absoluteValues = new ArrayList<Long>(); if (timestamps != null && timestamps.size() > 0) { if (timestamps.size() > 1) { for (int i = 0; i < timestamps.size(); i++) { for (int j = i + 1; j < timestamps.size(); j++) { long absoluteValue = Math.abs(timestamps.get(i) - timestamps.get(j)); absoluteValues.add(absoluteValue); long[] timestampTmp = { timestamps.get(i), timestamps.get(j) }; map.put(absoluteValue, timestampTmp); } } // 有可能有相等的情況。如2012-112012-11-01。時間戳是相等的 long minAbsoluteValue = -1; if (!absoluteValues.isEmpty()) { // 如果timestampssize2,這是差值只有一個,因此要給預設值 minAbsoluteValue = absoluteValues.get(0); } for (int i = 0; i < absoluteValues.size(); i++) { for (int j = i + 1; j < absoluteValues.size(); j++) { if (absoluteValues.get(i) > absoluteValues.get(j)) { minAbsoluteValue = absoluteValues.get(j); } else { minAbsoluteValue = absoluteValues.get(i); } } } if (minAbsoluteValue != -1) { long[] timestampsLastTmp = map.get(minAbsoluteValue); if (absoluteValues.size() > 1) { timestamp = Math.max(timestampsLastTmp[0], timestampsLastTmp[1]); } else if (absoluteValues.size() == 1) { // timestampssize2,需要與當前時間作為參照 long dateOne = timestampsLastTmp[0]; long dateTwo = timestampsLastTmp[1]; if ((Math.abs(dateOne - dateTwo)) < 100000000000L) { timestamp = Math.max(timestampsLastTmp[0], timestampsLastTmp[1]); } else { long now = new Date().getTime(); if (Math.abs(dateOne - now) <= Math.abs(dateTwo - now)) { timestamp = dateOne; } else { timestamp = dateTwo; } } } } } else { timestamp = timestamps.get(0); } } if (timestamp != 0) { date = new Date(timestamp); } return date; } /** * 判斷字串是否為日期字串 * @param date 日期字串 * @return true or false */ public static boolean isDate(String date) { boolean isDate = false; if (date != null) { if (StringToDate(date) != null) { isDate = true; } } return isDate; } /** * 獲取日期字串的日期風格。失敗返回null* @param date 日期字串 * @return 日期風格 */ public static DateStyle getDateStyle(String date) { DateStyle dateStyle = null; Map<Long, DateStyle> map = new HashMap<Long, DateStyle>(); List<Long> timestamps = new ArrayList<Long>(); for (DateStyle style : DateStyle.values()) { Date dateTmp = StringToDate(date, style.getValue()); if (dateTmp != null) { timestamps.add(dateTmp.getTime()); map.put(dateTmp.getTime(), style); } } dateStyle = map.get(getAccurateDate(timestamps).getTime()); return dateStyle; } /** * 將日期字串轉化為日期。失敗返回null* @param date 日期字串 * @return 日期 */ public static Date StringToDate(String date) { DateStyle dateStyle = null; return StringToDate(date, dateStyle); } /** * 將日期字串轉化為日期。失敗返回null* @param date 日期字串 * @param parttern 日期格式 * @return 日期 */ public static Date StringToDate(String date, String parttern) { Date myDate = null; if (date != null) { try { myDate = getDateFormat(parttern).parse(date); } catch (Exception e) { } } return myDate; } /** * 將日期字串轉化為時間戳。失敗返回null* @param date 日期字串 * @param parttern 日期格式 * @return 日期 */ public static long StringToGetTime(String date, String parttern) { long myDate = 0; if (date != null) { try { myDate = getDateFormat(parttern).parse(date).getTime(); } catch (Exception e) { } } return myDate; } /** * 將時間戳轉化為日期字串。失敗返回null* @param date 日期字串 * @param parttern 日期格式 * @return 日期 */ public static Date StringToGetTime(long date, String parttern) { Date myDate =null; if (date != 0) { try { String myDate1 = getDateFormat(parttern).format(date); myDate=getDateFormat(parttern).parse(myDate1); } catch (Exception e) { } } return myDate; } /** * 將日期字串轉化為日期。失敗返回null* @param date 日期字串 * @param dateStyle 日期風格 * @return 日期 */ public static Date StringToDate(String date, DateStyle dateStyle) { Date myDate = null; if (dateStyle == null) { List<Long> timestamps = new ArrayList<Long>(); for (DateStyle style : DateStyle.values()) { Date dateTmp = StringToDate(date, style.getValue()); if (dateTmp != null) { timestamps.add(dateTmp.getTime()); } } myDate = getAccurateDate(timestamps); } else { myDate = StringToDate(date, dateStyle.getValue()); } return myDate; } /** * 將日期轉化為日期字串。失敗返回null* @param date 日期 * @param parttern 日期格式 * @return 日期字串 */ public static String DateToString(Date date, String parttern) { String dateString = null; if (date != null) { try { dateString = getDateFormat(parttern).format(date); } catch (Exception e) { } } return dateString; } /** * 將日期轉化為日期字串。失敗返回null* @param date 日期 * @param dateStyle 日期風格 * @return 日期字串 */ public static String DateToString(Date date, DateStyle dateStyle) { String dateString = null; if (dateStyle != null) { dateString = DateToString(date, dateStyle.getValue()); } return dateString; } /** * 將日期字串轉化為另一日期字串。失敗返回null* @param date 舊日期字串 * @param parttern 新日期格式 * @return 新日期字串 */ public static String StringToString(String date, String parttern) { return StringToString(date, null, parttern); } /** * 將日期字串轉化為另一日期字串。失敗返回null* @param date 舊日期字串 * @param dateStyle 新日期風格 * @return 新日期字串 */ public static String StringToString(String date, DateStyle dateStyle) { return StringToString(date, null, dateStyle); } /** * 將日期字串轉化為另一日期字串。失敗返回null* @param date 舊日期字串 * @param olddParttern 舊日期格式 * @param newParttern 新日期格式 * @return 新日期字串 */ public static String StringToString(String date, String olddParttern, String newParttern) { String dateString = null; if (olddParttern == null) { DateStyle style = getDateStyle(date); if (style != null) { Date myDate = StringToDate(date, style.getValue()); dateString = DateToString(myDate, newParttern); } } else { Date myDate = StringToDate(date, olddParttern); dateString = DateToString(myDate, newParttern); } return dateString; } /** * 將日期字串轉化為另一日期字串。失敗返回null* @param date 舊日期字串 * @param olddDteStyle 舊日期風格 * @param newDateStyle 新日期風格 * @return 新日期字串 */ public static String StringToString(String date, DateStyle olddDteStyle, DateStyle newDateStyle) { String dateString = null; if (olddDteStyle == null) { DateStyle style = getDateStyle(date); dateString = StringToString(date, style.getValue(), newDateStyle.getValue()); } else { dateString = StringToString(date, olddDteStyle.getValue(), newDateStyle.getValue()); } return dateString; } /** * 增加日期的年份。失敗返回null* @param date 日期 * @param yearAmount 增加數量。可為負數 * @return 增加年份後的日期字串 */ public static String addYear(String date, int yearAmount) { return addInteger(date, Calendar.YEAR, yearAmount); } /** * 增加日期的年份。失敗返回null* @param date 日期 * @param yearAmount 增加數量。可為負數 * @return 增加年份後的日期 */ public static Date addYear(Date date, int yearAmount) { return addInteger(date, Calendar.YEAR, yearAmount); } /** * 增加日期的月份。失敗返回null* @param date 日期 * @param yearAmount 增加數量。可為負數 * @return 增加月份後的日期字串 */ public static String addMonth(String date, int yearAmount) { return addInteger(date, Calendar.MONTH, yearAmount); } /** * 增加日期的月份。失敗返回null* @param date 日期 * @param yearAmount 增加數量。可為負數 * @return 增加月份後的日期 */ public static Date addMonth(Date date, int yearAmount) { return addInteger(date, Calendar.MONTH, yearAmount); } /** * 增加日期的天數。失敗返回null* @param date 日期字串 * @param dayAmount 增加數量。可為負數 * @return 增加天數後的日期字串 */

相關推薦

java Calendar 日期獲取工具昨日開始時間昨日結束時間當前週一日期當前時間上月第一獲取當前第一

package com.ig.common.util; /** * 日期工具類 * Created by ccon 2015/9/9. */ import java.text.DateFormat; import java.text.ParseException; im

Java 通過Xml導出Excel文件Java Excel 導出工具Java導出Excel工具

public emp cep sdf value 提交 bsp datetime rtm Java 通過Xml導出Excel文件,Java Excel 導出工具類,Java導出Excel工具類 ============================== ?Copyri

Java執行緒安全的日期格式化工具

/** * 日期格式化輔助類 * * @author hkb <br> */ public final class DateUtils { /** 執行緒安全的日期格式物件 */ private static final

java 日期處理工具

package com.conb.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.

Java將Unix時間戳轉換成指定格式日期字串工具

package com.yanshu.controller; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.uti

java多執行緒工具可用該多執行緒同時處理相同且數量多的任務

package zrh4; public class ThreadModel {private static int maxThread = 4;protected static int currentThread = 0;private static ThreadMode

Java之請求傳送工具(HttpClientUtils爬蟲)-yellowcong

Java傳送請求,之前做過一段時間的爬蟲,所以寫了這個請求傳送的工具,這個工具偽裝成百度,然後去爬取推酷的資料,當時是由於推酷有ip訪問限制,你如果是爬蟲,就不讓訪問了,所以我偽裝成了百度,然後就可以隨便爬取推庫的資料了,當時爬了1GB多的文字資料,然後圖

Java 驗證表單工具史上最全

Java 驗證表彰工具類,包含各種驗證如郵箱,密碼,整數,等等,全的讓你想不到 package com.wiker.utils; import java.util.regex.*; /** * * @version 1.0 * @author wiker * @si

轉:java二維碼工具中間帶LOGO的很強大

package com.util.cccm; import java.awt.BasicStroke; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import

java 日期處理工具 DateUtil

http://bjtdeyx.iteye.com/blog/1551946 Java 日期時間 Date型別,long型別,String型別表現形式的轉換 http://www.xuebuyuan.com/1756921.html

WordUtil java導出word工具

tac 生成word marker ger imp port chm 下載 ram import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.Buffere

HttpUtils.java 網絡下載工具

arr tle sys 字節數 stream ati reat package you package Http;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.I

Java學習關於隨機數工具--Random

整數 boolean 下一個 構造 第一個 產生 byte cell 指定   Random類是偽隨機數生成器。之所以稱為偽隨機數(pseudorandom),是因為它們只是簡單的均勻分布序列。Random類定義了以下構造函數:     Random()     Rando

日期操作工具

ret catch pre pri 必須 led mem systemd stack 相關代碼如下 public class DateUtil { /** * * @param dateStyle 日期的樣式:如yyyyMMddHH

java Int數據工具

byte ++ res data 字節數組 pub urn 轉換成 ava  1、在使用tcp協議傳輸數據時,使用到的 Int 數據的工具類方法   //將 Int 數據轉換成字節數組   public static byte[] intToByteArray(int da

Java 中的Array工具

查詢 bool als 二分 對數 score 對象 int 定義 1、boolean equals(array1,array2):比較兩個數組是否相等。import java.util.Arrays;public class Ch03 { public static vo

java 分庫關聯查詢工具

      問題:   由於公司業務擴大,各個子系統陸續遷移和部署在不同的資料來源上,這樣方便擴容,但是因此引出了一些問題。   舉個例子:在查詢"訂單"(位於訂單子系統)列表時,同時需要查詢出所關聯的"使用者"(位於賬戶子系統)的姓名,而這時由於資料儲存在不同的資料來源上,

Java併發程式設計的藝術之八----java中的併發工具

1.等待多執行緒完成的countDownLatch CountDownLatch允許一個或多個執行緒等待其他執行緒完成操作。 執行緒中,讓一個執行緒等待最簡單的做法是使用join方法,執行緒A中呼叫B.join方法,說明讓執行緒A等待執行緒B完成之後再執行。 實現原理:不停檢查執行緒是否

JAVA資原始檔操作工具

package com.kkmall.risk.common.utils; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import jav

java位元組字元轉換工具

該工具類作用是位元組,字元陣列的相互轉換(避免重複造輪子),分享給大家 public class ConvertUtil {     /**      * 位元組陣列轉16進位制字串    &