java 星期幾、得周一、得周日、上周、下周、相差、日期工具類

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。?

import org.apache.commons.lang3.StringUtils;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;/*** 日期工具類** @author silence* @version 2017/12/24*/
public class DateUtil {private static final String YYYY_MM_DD = "yyyy-MM-dd";public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");public static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm:ss");public static final int DAYS_OF_ONE_WEEK = 7;/*** 查當前日期是一周中的第幾天、星期幾* @return*/public static long getWhicthDay(Date today){Calendar cal = Calendar.getInstance();cal.setTime(today);// 1=Sunday,2=Monday,,,7=Saturday。return cal.get(Calendar.DAY_OF_WEEK);}/*** 判斷日期是否相等 年/月/日相等 就是相等了** @param day1* @param day2* @return*/public static boolean isDateEqualToday(Date day1, Date day2) {return day1.getYear() == day2.getYear()&& day1.getMonth() == day2.getMonth()&& day1.getDay() == day2.getDay();}/*** 計算距離baseDate 若干天的 日期* days=2 表示2天后* days=-1 一天前** @param baseDate 日期 null 表示當前日期* @param days     日期* @return*/public static Date daysBetweenWeeks(Date baseDate, int days) {Calendar c = Calendar.getInstance();if (baseDate != null)c.setTime(baseDate);c.add(Calendar.DAY_OF_MONTH, days);return c.getTime();}public static java.sql.Date fromUtilDate(Date utilDate) {java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());return sqlDate;}//    public static Date lastMonday() {
//        Date _7daysBefore = daysBetweenWeeks(null, -DAYS_OF_ONE_WEEK);
//        return mondayOfThisWeek(_7daysBefore);
//    }
//
//    public static Date lastSunday() {
//        Date _7daysBefore = daysBetweenWeeks(null, -DAYS_OF_ONE_WEEK);
//        return sundayOfThisWeek(_7daysBefore);
//    }/*** 獲取某個日期對應的 日期 的周一** @param theDate 某個日期 null的話,表示當前日期* @return Date*/public static Date mondayOfThisWeek(Date theDate) {Calendar c = Calendar.getInstance();if (theDate != null) c.setTime(theDate);c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // 獲取 周一return c.getTime();}/*** 獲取某個日期對應的 日期 的周日** @param theDate 某個日期 null的話,表示當前日期*                獲取當前日期的周7,注意 日歷獲取的周期是*                周日,1,2,3,4,5,6  不是中國傳統的*                1,2,3,4,5,6,周日*                所以要加7* @return Date*/public static Date sundayOfThisWeek(Date theDate) {Calendar c = Calendar.getInstance();if (theDate != null) c.setTime(theDate);c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);               // 獲取 周日c.add(Calendar.DAY_OF_MONTH, 7);     // 獲取 中國意義上的 周日return c.getTime();}/*** 獲取某個日期對應的 日期 的周日** @param theDate 某個日期 null的話,表示當前日期*                獲取當前日期的周7,注意 日歷獲取的周期是*                周日,1,2,3,4,5,6  不是中國傳統的*                1,2,3,4,5,6,周日*                所以要加7* @return Date*/public static Date getSundayOfThisWeek(Date theDate) {Calendar c = Calendar.getInstance();if (theDate != null) c.setTime(theDate);c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);               // 獲取 周日c.add(Calendar.DAY_OF_MONTH, 7);     // 獲取 中國意義上的 周日if(getWhicthDay(theDate)==1){c.add(Calendar.DATE, c.getFirstDayOfWeek() - 8);}return c.getTime();}/*** 字符串轉換為日期類型** @param dateString* @return*/public static Date stringToDate(String dateString) {try {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return sdf.parse(dateString);} catch (ParseException e) {System.out.println(e.getMessage());}return null;}public static String dateToString(Date date) {try {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return sdf.format(date);} catch (Exception e) {System.out.println(e.getMessage());}return date.toString();}/*** YYYY:MM:DD hh:mm:ss --->YYYY:MM:DD** @param date* @return*/public static Date timeToDate(Date date) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String s = sdf.format(date);try {return sdf.parse(s);} catch (ParseException e) {e.printStackTrace();}return null;}/*** 獲取某天當前周的周一* @param date* @return*/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);// 根據日歷的規則,當前日期減去 星期幾與一個星期第一天的差值  即可計算當前周期第一天cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);return cal.getTime();}/*** 獲取某天上周一的日期** @param date* @return*/public static Date geLastWeekMonday(Date date) {Calendar cal = Calendar.getInstance();cal.setTime(getThisWeekMonday(date));cal.add(Calendar.DATE, -7);return cal.getTime();}/*** 獲取某天下周一的日期** @param date* @return*/public static Date getNextWeekMonday(Date date) {Calendar cal = Calendar.getInstance();cal.setTime(getThisWeekMonday(date));cal.add(Calendar.DATE, 7);return cal.getTime();}/*** 獲取某天的前后幾天的日期** @param date* @param day  :正數表示后幾天,負數表示前幾天* @return*/public static Date addDay(Date date, int day) {Calendar cal = Calendar.getInstance();cal.setTime(date);cal.add(Calendar.DATE, day);return cal.getTime();}/*** 添加時間** @param date* @param time hh:mm:ss* @return*/public static Date addTime(Date date, String time) {if (StringUtils.isEmpty(time)) return date;Calendar cd = Calendar.getInstance();cd.setTime(date);String[] times = time.split(":");//eg:["01","00","00"]int[] timeUnit = {Calendar.HOUR, Calendar.MINUTE, Calendar.SECOND};if (date != null) {for (int i = 0; i < times.length; i++) {cd.add(timeUnit[i], Integer.valueOf(times[i]));}}return cd.getTime();}}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449923.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449923.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449923.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

蘋果前CEO斯卡利變身創業導師:欲尋下個喬布斯

喬布斯和約翰斯卡利 導語&#xff1a;國外媒體今天撰文稱&#xff0c;蘋果前CEO約翰斯卡利(John Sculley)雖然早已離開蘋果&#xff0c;但仍然活躍在科技行業。他現在將目光轉向了醫療科技領域&#xff0c;希望從中挖掘出下一個喬布斯。 以下為文章全文&#xff1a; 下一個喬布…

記錄一次kernel內存泄漏的查找定位過程

Bug描述&#xff1a;壓力測試一個小工程時發現內存逐漸減少&#xff0c;10個小時后出現OOM Bug定位過程&#xff1a; 對整個工程模塊進行分解&#xff0c;逐步縮小范圍&#xff0c;由于整個工程包括幾個相對獨立的小模塊&#xff0c;而整個工程采用單進程多線程的模型&#x…

python3.6+selenium_Testsuits測試套件

#!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2018/11/23 11:23 # File : unittest_test2_2.pyTestsuits測試套件 import unittest from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.commo…

PBRT筆記(7)——反射模型

基礎術語 表面反射可以分為4大類&#xff1a; diffuse 漫反射glossy specular 鏡面反射高光perfect specular 完美反射高光retro-reflective distributions 后反射分布幾何坐標系以及工具函數 pbrt中的反射是在反射坐標系中進行計算的。坐標系由著色點處法向量與兩個切向量組成…

Linux grep命令、Linux cd命令、Linux pwd命令

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Linux grep命令用于查找文件里符合條件的字符串。 grep指令用于查找內容包含指定的范本樣式的文件&#xff0c;如果發現某文件的內容符…

忠告:創業公司與大公司正面競爭易死

移動互聯網的興起給了創業公司足夠的發展空間&#xff0c;也提供了一個相對公平的競爭平臺。但機遇永遠與挑戰并存。   對于初創公司&#xff0c;最大的挑戰莫過于在移動互聯網大潮中生存下來。IDG資本合伙人高翔認為&#xff0c;初創公司不要和大公司正面競爭&#xff0c;應…

海康螢石攝像機遠程監控機制分析

背景介紹 有一個遠程監控的需求&#xff0c;正常情況下采用服務器轉發視頻流對服務器要求很高&#xff0c;所以p2p看似是一個比較好的方案&#xff0c;但是p2p打洞卻不是一件容易的事情&#xff0c;所以打算分析下海康螢石攝像機遠程監控的機制&#xff0c;是否采用了p2p的方式…

實體類中存在List集合,怎么在xml文件中,對應

public class AppointmentDTO {/**訂單id**/private String appointmentId;/**訂單里面的商品list**/private List<CommodityShowInAppoinment> list;/**訂單里面的商品數量**/private Integer count;/**訂單實際付款的金額**/private Float totalMoney; } 怎么弄呢&…

git管理復雜項目代碼

背景 我初學前端的時候接觸git&#xff0c;那時候只要會add/commit什么的就好了&#xff0c;網上的教程大多都停留在從頭到尾一個個介紹git的命令&#xff0c;關于各種用法&#xff0c;特別是多個分支來回交叉沖突的實際處理&#xff0c;很少有這方面的介紹&#xff0c;經過很多…

實現一個通用的生產者消費者隊列(c語言版本)

背景&#xff1a;筆者之前一直從事嵌入式音視頻相關的開發工作&#xff0c;對于音視頻的數據的處理&#xff0c;生產者消費者隊列必不可少&#xff0c;而如何實現一個高效穩定的生產者消費者隊列則十分重要&#xff0c;不過按照筆者從業的經驗&#xff0c;所看到的現象&#xf…

美媒:小米新浪達成合作 采取行動對抗騰訊

來自美媒的報道稱&#xff0c;兩家中國最具發展潛力的科技公司&#xff0c;新浪和小米將會共同合作&#xff0c;結合各自的通信應用程序來共同對抗移動通信的挑戰&#xff0c;尤其是擁有2億用戶的強勁對手微信。 來自中國的消息稱&#xff0c;這次新浪與小米的合作將會涉及到新…

Linux expr命令、Linux wc命令、Linux let 命令

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 expr命令是一個手工命令行計數器&#xff0c;用于在UNIX/LINUX下求表達式變量的值&#xff0c;一般用于整數值&#xff0c;也可用于字符…

【English】六、am,is,are 分別用在什么地方

is&#xff1a;第三人稱單數am&#xff1a;第一人稱單數are&#xff1a;第二人稱單數&#xff0c;第一、二、三人稱的復數 用于第一人稱, I am ......(我是.......)用于第三人稱, He is ......(他是......) 或She is ......(她是......), It is ......(它是.......)用于第二人…

誤刪了公司數據庫,但我還是活下來了

專欄 | 九章算法 網址 | www.jiuzhang.com 上周我與同事們進行了一次關于職業生涯中搞砸了一些事情的簡短談話。這確實會淪為他人笑柄&#xff0c;卻更給我們帶來了珍貴的教訓。重要的是&#xff0c;我們應該分享那些曾經的錯誤&#xff0c;這樣其他人就可以從其中學習。下文是…

改良程序的11技巧

有很多理由都能說明為什么我們應該寫出清晰、可讀性好的程序。最重要的一點&#xff0c;程序你只寫一次&#xff0c;但以后會無數次的閱讀。當你第二天回頭來看你的代碼時&#xff0c;你就要開始閱讀它了。當你把代碼拿給其他人看時&#xff0c;他必須閱讀你的代碼。因此&#…

歷時四年,給Google提交的Android Framework Bug終于被Fixed了

歷時四年&#xff0c;Google終于修復了一個我發現的Android Framework Bug 2014年在做一個Android終端設備開發過程中&#xff0c;發現了一個Android Framework層的Bug&#xff0c;給Google提交了issue和解決方案&#xff0c;和外界傳言一致Google一般不太在意個人開發者提交的…

Linux ping命令、Linux kill命令、Linux logname命令、 Linux logout命令

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Linux ping命令用于檢測主機。 執行ping指令會使用ICMP傳輸協議&#xff0c;發出要求回應的信息&#xff0c;若遠端主機的網絡功能沒有…

前端布局神器display:flex

2009年&#xff0c;W3C提出了一種新的方案--Flex布局&#xff0c;可以簡便、完整、響應式地實現各種頁面布局。目前已得到所有現在瀏覽器的支持。 flex瀏覽器支持一、Flex布局是什么&#xff1f; Flex是Flexible Box的縮寫&#xff0c;翻譯成中文就是“彈性盒子”&#xff0c;用…

bind簡單轉發實驗

2019獨角獸企業重金招聘Python工程師標準>>> *主配置文件內容// [rootlocalhost /]# cat /etc/named.conf // // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a local…

數據結構:塊狀鏈表

一、概述 有時候我們需要設計這樣一種數據結構&#xff1a;它能快速在要求位置插入或者刪除一段數據。先考慮兩種簡單的數據結構&#xff1a;數組和鏈表。數組的優點是能夠在O(1)的時間內找到所要執行操作的位置&#xff0c;但其缺點是無論是插入或刪除都要移動之后的所有數據&…