关于时间计算与获取
目錄
1、獲取當前時間
2、第二種類型 Calendar
3、時間加減(1)
4、時間加減(2)
5、時間比較
6、定時
結尾
首先對于時間這個概念相信大家也是不會陌生的因為在程序中也是不可避免的一個技術點,那么本文講述的有定時以及時間相加和時間比較大小(所有代碼都會統一放在最后,前面一段為講解)
“獲取當前時間”,
首先是單純的只為獲取到當前的時間而已
通過這張圖片發現其實你new date 已經實現了獲取當前時間,但是這是我們想要的嗎?不是!我們獲取的時間類型格式不是我們想要的,所以我們可以給他格式化。
?上面一張圖就是進行了格式化然而這僅僅是可以顯示當前時間而已并不能當做比較時間,上面的方法可以獲取時間也還有別的方法來獲取時間
?第二種類型 Calendar
?可以觀看下面的這一段代碼,這是另一種獲取當前時間的類型 Calendar 類型,上網查閱的資料中他和Date類型并沒有什么明顯的區別但是為什么這一種類型不是很常見呢?因為Date是可以獲取到毫秒值,而Calendar并不能獲取到這么小的數值,所以Calendar常用與做日歷等一些功能
//獲取當前時間Calendar instance = Calendar.getInstance();System.out.println("直接打印:"+instance);Date t=instance.getTime();System.out.println("打印"+simpleDateFormat.format(t));時間加減(1)
class ppt{public static void main(String[] args) {Date date = new Date();SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");date.setYear(date.getYear()-1);System.out.println(format.format(date));} }從上面的代碼中可以看出普通的Date類型是可以單獨對?任意的一個類型進行加減的,其余的類型也是類似的可能有人會說那一行一行寫是不是太麻煩了,當然,我們也有另外一種方法可以只用一行代碼就完成這需要很多行代碼的方法。
時間加減(2)
Date date1 = new Date();int n=0;int a=25;//固定日期格式SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//獲取想要的確切日期、天、時、分、秒、毫String format2 = simpleDateFormat1.format(new Date(date1.getTime()-0 * 24 * 60 * 60 * 1000));System.out.println("獲取時間"+format2);????????一行代碼解決了,以日為單位的時間加減,說到這可能就有人就會問了為什么沒有月和年?其實是不需要,一個活動長也就是一個月,短也就是幾天,可以使用以年為單位,以月為單位的功能很少,時間加減1中的代碼完全可以勝任
時間比較
? ? ? ? ?從上圖中可以看出main線程獲取的時間是比a線程早5秒的所以在判斷時間時,我們直接在變量后面點gettime可以直接獲取時間值,那么我們來打印一下gettime來看看他是什么
? ? ? ? ?從打印的結果中可以看出gettime是一串時間值,是以毫秒值為單位的數字在這里我們可以用作來比較時間的大小
定時
? ? ? ? 最后一個知識點定時,有許多的程序是需要定時來完成的比如Redis緩存數據、更新es等
都可以看出定時的作用,雖然在前臺頁面上展示的不是很多但是在后臺中也是一個非常需要注意的一個小功能,話不多說我們來看一看定時吧。
? ? ? ? 看見上圖中的注解每個星星分別代表著,秒、分、時、日、月、周、需要注意的是原本是有第七個星星的就是年但是使用頻率非常少,?所以是可以忽略的,另外在啟動類中需要加入一個啟動項
? ? ? ? 詳細的其中的操作我就不多說了?后續的文章我會專門發一篇。
結尾:
????????可能講述的不是很全,同時也歡迎各路同學來添加知識,指出錯誤,相信我們在不斷學習中戒驕戒躁、砥礪前行、化知識為動力在人生中大放光彩。
package sample;import com.sun.xml.internal.ws.util.StringUtils;import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.concurrent.TimeUnit;public class Controller {public static void main(String[] args) {//獲取當前時間Date date = new Date();date.setYear(date.getYear()-1);System.out.println("輸出獲取的當前時間:"+date);//時間格式化SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//進行string類型打印String format = simpleDateFormat.format(date.getTime());System.out.println("string類型打印當前時間"+format);//獲取當前時間Calendar instance = Calendar.getInstance();System.out.println("直接打印:"+instance);Date t=instance.getTime();System.out.println("打印"+simpleDateFormat.format(t));//格式化String format1 = simpleDateFormat.format(instance.getTime());System.out.println("第二種方法打印時間:"+format1);//獲取年System.out.println(instance.get(Calendar.YEAR));//獲取月、以此類推可以單獨獲取所有的時間單位System.out.println(instance.get(Calendar.MONTH)+1);Date date1 = new Date();int n=0;int a=25;//固定日期格式SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//獲取想要的確切日期、天、時、分、秒、毫String format2 = simpleDateFormat1.format(new Date(date1.getTime()-0 * 24 * 60 * 60 * 1000));System.out.println("獲取時間"+format2);// System.out.println(new Date(date1.getTime()-2 * 24 * 60 * 60 * 1000));StringBuilder stringBuilder = new StringBuilder();} } //創建線程a class ppttwo{volatile Date time=null;public void addt(){this.time=new Date();} } //主線程main class ppt{public static void main(String[] args) {Date date = new Date();ppttwo ppttwo = new ppttwo();//啟用線程new Thread(()->{try {//線程a延時5秒TimeUnit.SECONDS.sleep(5);} catch (InterruptedException e){e.printStackTrace();}ppttwo.addt();},"a").start();//如果while (ppttwo.time==null){}//定義時間格式SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");if (date.getTime()>ppttwo.time.getTime()){System.out.println("mian線程時間:"+format.format(date));System.out.println("a線程時間:"+format.format(ppttwo.time.getTime()));System.out.println("main:"+date.getTime());System.out.println("main:"+ppttwo.time.getTime());System.out.println("main線程時間大");}else {System.out.println("mian線程時間:"+format.format(date));System.out.println("a線程時間:"+format.format(ppttwo.time.getTime()));System.out.println("main:"+date.getTime());System.out.println("main:"+ppttwo.time.getTime());System.out.println("a線程時間大");}} }總結
- 上一篇: 超好用的内网穿透工具【永久免费不限制流量
- 下一篇: Datacamp 笔记代码 Superv