時間工具類

1.本周開始時間戳 - 以星期一為本周的第一天

public static String getWeekStartTime() {

? ? SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());

? ? Calendar cal = Calendar.getInstance();

? ? int day_of_week = cal.get(Calendar.DAY_OF_WEEK) - 1;

? ? if (day_of_week == 0) {

? ? ? ? day_of_week = 7;

}

? ? cal.add(Calendar.DATE, -day_of_week + 1);

? ? return simpleDateFormat.format(cal.getTime());

}

2.本周結(jié)束時間戳 - 以星期一為本周的第一天

public static String getWeekEndTime() {

? ? SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());

? ? Calendar cal = Calendar.getInstance();

? ? int day_of_week = cal.get(Calendar.DAY_OF_WEEK) - 1;

? ? if (day_of_week == 0) {

? ? ? ? day_of_week = 7;

}

? ? cal.add(Calendar.DATE, -day_of_week + 7);

? ? return simpleDateFormat.format(cal.getTime());

}

?3.本月開始時間戳

public static String getMonthStartTime() {

? ? Calendar c = Calendar.getInstance();

? ? c.add(Calendar.MONTH, 0);

? ? c.set(Calendar.DAY_OF_MONTH, 1);//設置為1號,當前日期既為本月第一天

? ? //將小時至0

? ? c.set(Calendar.HOUR_OF_DAY, 0);

? ? //將分鐘至0

? ? c.set(Calendar.MINUTE, 0);

? ? //將秒至0

? ? c.set(Calendar.SECOND, 0);

? ? //將毫秒至0

? ? c.set(Calendar.MILLISECOND, 0);

? ? SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());

? ? String dateString = format.format(c.getTime());

? ? Date date = null;

? ? try {

? ? ? ? date = format.parse(dateString);

? ? } catch (ParseException e) {

? ? ? ? e.printStackTrace();

}

? ? return format.format(date);

}


4.獲取當前的星期數(shù)

public static int setCurrentDayOfWeek(Calendar calendar) {

? ? //一周第一天是否為星期天

? ? boolean isFirstSunday = (calendar.getFirstDayOfWeek() == Calendar.SUNDAY);

? ? //獲取周幾

? ? int weekDay = calendar.get(Calendar.DAY_OF_WEEK);

? ? calendar.setFirstDayOfWeek(Calendar.MONDAY);

? ? //若一周第一天為星期天倍阐,則-1

? ? if (isFirstSunday) {

? ? ? ? weekDay = weekDay - 1;

? ? ? ? if (weekDay == 0) {

? ? ? ? ? ? weekDay = 7;

}

}

? ? return weekDay;

}


5. 獲取date類型的時分秒

public static String getTime(Date date) {

? ? SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

? ? return dateFormat.format(date);

}


?6.獲取date類型的年月日

public static String getDate(Date date) {

? ? SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

? ? return dateFormat.format(date);

}

7.根據(jù)日期獲取本周一的時間

public static Date getThisWeekMonday(Date date) {

? ? Calendar cal = Calendar.getInstance();

? ? cal.setTime(date);

? ? // 獲得當前日期是一個星期的第幾天

? ? int dayWeek = cal.get(Calendar.DAY_OF_WEEK);

? ? if (1 == dayWeek) {

? ? ? ? cal.add(Calendar.DAY_OF_MONTH, -1);

}

? ? // 設置一個星期的第一天,按中國的習慣一個星期的第一天是星期一

? ? cal.setFirstDayOfWeek(Calendar.MONDAY);

? ? // 獲得當前日期是一個星期的第幾天

? ? int day = cal.get(Calendar.DAY_OF_WEEK);

? ? // 根據(jù)日歷的規(guī)則木蹬,給當前日期減去星期幾與一個星期第一天的差值

? ? cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);

? ? return cal.getTime();

}


8.時間字符串加/減天數(shù)

public static String dateStrToAddDay(String strDate, int dayNums) {

? ? Calendar c = Calendar.getInstance();

? ? c.setTime(DateTime.dateToString(strDate, "yyyy-MM-dd"));

? ? c.add(Calendar.DAY_OF_MONTH, dayNums);

? ? return DateTime.dateToString(c.getTime(), "yyyy-MM-dd");

}



?9.返回當前時間的前7天集合?

public static List<String> getFrontSeven(String strDate) {

? ? List<String> dateList = new ArrayList<>();

? ? Calendar c = Calendar.getInstance();

? ? c.setTime(DateTime.dateToString(strDate, "yyyy-MM-dd"));

? ? for (int i = 0; i < 7; i++) {

? ? ? ? c.add(Calendar.DATE, -1);

? ? ? ? dateList.add(DateTime.dateToString(c.getTime(), "yyyy-MM-dd"));

}

? ? return dateList;

}



10.給定開始時間 結(jié)束時間 返回天數(shù)集合

public static List<String> getStartTime(String startTime, String endTime) {

? ? int interval = 0;

? ? try {

? ? ? ? if (startTime.length() == "yyyy-MM-dd HH:mm:ss".length()) {

? ? ? ? ? ? SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

? ? ? ? ? ? Date d1 = sdf.parse(startTime);

? ? ? ? ? ? Date d2 = sdf.parse(endTime);

? ? ? ? ? ? interval = daysBetween(d1, d2);

}

? ? ? ? if (startTime.length() == "yyyy-MM-dd".length()) {

? ? ? ? ? ? SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

? ? ? ? ? ? Date d1 = sdf.parse(startTime);

? ? ? ? ? ? Date d2 = sdf.parse(endTime);

? ? ? ? ? ? interval = daysBetween(d1, d2);

}

? ? } catch (ParseException e) {

? ? ? ? e.printStackTrace();

}

? ? List<String> dateList = new ArrayList<>();

? ? Calendar c = Calendar.getInstance();

? ? c.setTime(DateTime.dateToString(startTime, "yyyy-MM-dd"));

? ? for (int i = 0; i <= interval; i++) {

? ? ? ? dateList.add(DateTime.dateToString(c.getTime(), "yyyy-MM-dd"));

? ? ? ? c.add(Calendar.DATE, 1);

}

? ? return dateList;

}


11.獲取今天日期? yyyy-MM-dd HH:mm:ss?

public static String getDataFroDatTime() {

? ? Date date = new Date();

? ? SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

? ? String data = formatter.format(date);

? ? return data;

}


12.獲取兩個時間段的所有日期

public static List<String> getBetweenDate(String begin, String end) {

? ? SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

? ? List<String> betweenList = new ArrayList<String>();

? ? try {

? ? ? ? Calendar startDay = Calendar.getInstance();

? ? ? ? startDay.setTime(format.parse(begin));

? ? ? ? startDay.add(Calendar.DATE, -1);

? ? ? ? while (true) {

? ? ? ? ? ? startDay.add(Calendar.DATE, 1);

? ? ? ? ? ? Date newDate = startDay.getTime();

? ? ? ? ? ? String newend = format.format(newDate);

? ? ? ? ? ? betweenList.add(newend);

? ? ? ? ? ? if (end.equals(newend)) {

? ? ? ? ? ? ? ? break;

}

}

? ? } catch (Exception e) {

? ? ? ? e.printStackTrace();

}

? ? return betweenList;

}


?13.判斷當前時間是否在時間段內(nèi)

public static Boolean belongCalendar(String beginTime, String endTime) {

? ? SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");//設置日期格式

? ? Date now = null;

? ? Date beginTimeByDate = null;

? ? Date endTimeByDate = null;

? ? try {

? ? ? ? now = df.parse(df.format(new Date()));

? ? ? ? beginTimeByDate = df.parse(beginTime);

? ? ? ? endTimeByDate = df.parse(endTime);

? ? } catch (Exception e) {

? ? ? ? e.printStackTrace();

}

? ? Boolean flag = belongCalendar(now, beginTimeByDate, endTimeByDate);

? ? return flag;

}


14.判斷時間是否在時間段內(nèi)

public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {

? ? Calendar date = Calendar.getInstance();

? ? date.setTime(nowTime);

? ? Calendar begin = Calendar.getInstance();

? ? begin.setTime(beginTime);

? ? Calendar end = Calendar.getInstance();

? ? end.setTime(endTime);

? ? if (date.after(begin) && date.before(end)) {

? ? ? ? return true;

? ? } else {

? ? ? ? return false;

}

}


15.獲取某個時間段內(nèi)所有日期

public static List<String> getDayBetweenDates(String begin, String end) {

? ? List<String> lDate = new ArrayList<String>();

? ? try {

? ? ? ? SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");

? ? ? ? Date dBegin = sd.parse(begin);

? ? ? ? Date dEnd = sd.parse(end);

? ? ? ? lDate.add(sd.format(dBegin));

? ? ? ? Calendar calBegin = Calendar.getInstance();

? ? ? ? // 使用給定的 Date 設置此 Calendar 的時間

? ? ? ? calBegin.setTime(dBegin);

? ? ? ? Calendar calEnd = Calendar.getInstance();

? ? ? ? // 使用給定的 Date 設置此 Calendar 的時間

? ? ? ? calEnd.setTime(dEnd);

? ? ? ? // 測試此日期是否在指定日期之后

? ? ? ? while (dEnd.after(calBegin.getTime())) {

? ? ? ? ? ? // 根據(jù)日歷的規(guī)則狐援,為給定的日歷字段添加或減去指定的時間量

? ? ? ? ? ? calBegin.add(Calendar.DAY_OF_MONTH, 1);

? ? ? ? ? ? lDate.add(sd.format(calBegin.getTime()));

}

? ? } catch (ParseException e) {

? ? ? ? e.printStackTrace();

}

? ? return lDate;

}

16.減一天

public static String dataBeforeDay(String dateOld) {

? ? DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

? ? /**

? ? * 減少一天

? ? */

? ? try {

? ? ? ? long dif = df.parse(dateOld).getTime() - 86400 * 1000; //減一天

? ? ? ? Date date = new Date();

? ? ? ? date.setTime(dif);

? ? ? ? return df.format(date);

? ? } catch (ParseException e) {

? ? ? ? e.printStackTrace();

}

? ? return "";

}

17.增加一天

public static String dataAfterDay(String dateOld) {

? ? DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

? ? try {

? ? ? ? Date dd = df.parse(dateOld);

? ? ? ? Calendar calendar = Calendar.getInstance();

? ? ? ? calendar.setTime(dd);

? ? ? ? calendar.add(Calendar.DAY_OF_MONTH, 1);//增加一天

? ? ? ? System.out.println("增加一天之后:" + df.format(calendar.getTime()));

? ? } catch (ParseException e) {

? ? ? ? e.printStackTrace();

}

? ? return "";

}


18:判斷倆個日期段是否重疊


/**

* 判斷倆個日期段是否重疊

*/

public static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");

public static boolean isOverlap(String startdate1, String enddate1, String startdate2, String enddate2) {

? ? Date leftStartDate = null;

? ? Date leftEndDate = null;

? ? Date rightStartDate = null;

? ? Date rightEndDate = null;

? ? try {

? ? ? ? leftStartDate = format.parse(startdate1);

? ? ? ? leftEndDate = format.parse(enddate1);

? ? ? ? rightStartDate = format.parse(startdate2);

? ? ? ? rightEndDate = format.parse(enddate2);

? ? } catch (ParseException e) {

? ? ? ? return false;

? ? }

? ? return

? ? ? ? ? ? ((leftStartDate.getTime() >= rightStartDate.getTime()) && leftStartDate.getTime() < rightEndDate.getTime())

? ? ? ? ? ? ? ? ? ? || ((leftStartDate.getTime() > rightStartDate.getTime()) && leftStartDate.getTime() < rightEndDate.getTime())

? ? ? ? ? ? ? ? ? ? || ((rightStartDate.getTime() >= leftStartDate.getTime()) && rightStartDate.getTime() < leftEndDate.getTime())

? ? ? ? ? ? ? ? ? ? || ((rightStartDate.getTime() > leftStartDate.getTime()) && rightStartDate.getTime() < leftEndDate.getTime());

}


19. 獲得某天最大時間2017-10-15 23:59:59

public static Date getEndOfDay(Date date) {

? ? LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());

? ? LocalDateTime endOfDay = localDateTime.with(LocalTime.MAX);

? ? return Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant());

}

20. 獲得某天最小時間2017-10-15 00:00:00

public static Date getStartOfDay(Date date) {

? ? LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());

? ? LocalDateTime startOfDay = localDateTime.with(LocalTime.MIN);

? ? return Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant());

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末慨蓝,一起剝皮案震驚了整個濱河市揪利,隨后出現(xiàn)的幾起案子旦装,更是在濱河造成了極大的恐慌疏唾,老刑警劉巖蓄氧,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異荸实,居然都是意外死亡匀们,警方通過查閱死者的電腦和手機缴淋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門准给,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泄朴,“玉大人,你說我怎么就攤上這事露氮∽婊遥” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵畔规,是天一觀的道長局扶。 經(jīng)常有香客問我,道長叁扫,這世上最難降的妖魔是什么三妈? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮莫绣,結(jié)果婚禮上畴蒲,老公的妹妹穿的比我還像新娘。我一直安慰自己对室,他們只是感情好模燥,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著掩宜,像睡著了一般蔫骂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上牺汤,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天辽旋,我揣著相機與錄音,去河邊找鬼慧瘤。 笑死戴已,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的锅减。 我是一名探鬼主播糖儡,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼怔匣!你這毒婦竟也來了握联?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤每瞒,失蹤者是張志新(化名)和其女友劉穎金闽,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剿骨,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡代芜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了浓利。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挤庇。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡钞速,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嫡秕,到底是詐尸還是另有隱情渴语,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布昆咽,位于F島的核電站驾凶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏掷酗。R本人自食惡果不足惜调违,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望泻轰。 院中可真熱鬧翰萨,春花似錦、人聲如沸糕殉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阿蝶。三九已至雳锋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間羡洁,已是汗流浹背玷过。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留筑煮,地道東北人辛蚊。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像真仲,于是被迫代替她去往敵國和親袋马。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容