最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中Date類和Calendar類的常用實例小結(jié)

 更新時間:2015年08月06日 09:49:45   作者:zinss26914  
這篇文章主要介紹了Java中Date類和Calendar類的常用實例小結(jié),是Java入門學習中的基礎知識的運用,需要的朋友可以參考下

前言
寫后臺程序的時候,經(jīng)常需要存儲當前服務器的時間戳,使用時間戳也很方便,客戶端和服務器端都可以根據(jù)自己的需求做各自的轉(zhuǎn)換

在php里,獲取當前時間戳使用time()函數(shù),格式化輸出通過Date()函數(shù)即可,Java里相對復雜一些,這里簡單介紹一下

Java語言中的Calendar,Date,DateFormat組成了Java標準的一個基本但是非常重要的部分。日期是商業(yè)邏輯計算一個關鍵的部分,所有的開發(fā)者都應該能計算未來的日期,定制日期的顯示格式,并將文本數(shù)據(jù)解析成日期對象


獲取UNIX時間戳
在JDK1.0中,Date類是唯一的一個代表時間的類,但是由于Date類不便于實現(xiàn)國際化,所以從JDK1.1版本開始,推薦使用Calendar類進行時間和日期的處理。這里簡單介紹一下用Date類如何獲取當前時間戳

使用系統(tǒng)的當前日期和時間創(chuàng)建一個日期對象并返回一個長整數(shù),這個時間通常稱為Java 虛擬機(JVM)主機環(huán)境的系統(tǒng)時間,單位是毫秒,因此需要除以1000轉(zhuǎn)換成UNIX時間戳

  

 import java.util.Date; 
   
  public class TimeTest { 
    public static void main(String args[]) { 
      Date time = new Date(); 
      System.out.println(time.getTime() / 1000); // 1387258105 
      System.out.println(time.toString()); // Tue Dec 17 13:28:25 CST 2013 
    } 
  } 

格式化日期
php里可以使用Date()函數(shù)定制日期數(shù)據(jù)的格式用于呈現(xiàn),Java里需要調(diào)用SimpleDateFormat類,例如將當前時間格式化輸出:

 

  import java.text.SimpleDateFormat; 
  import java.util.Date; 
   
   
  public class TimeTest { 
    public static void main(String args[]) { 
      Date time = new Date(); 
      System.out.println(time.getTime() / 1000); // 1387260201 
   
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss"); // 2013-03-17 14:03:21 
      String str = sdf.format(time); 
      System.out.println(str); 
    } 
  } 

將文本解析成日期對象
給定了格式化的時間字符串,例如“2013-12-17 14:05:59”,需要將其轉(zhuǎn)換成Date對象,便于獲取時間戳獲取進行其它格式化操作,可以繼續(xù)調(diào)用SimpleDateFormat類

  

 import java.text.ParseException; 
  import java.text.SimpleDateFormat; 
  import java.util.Date; 
   
   
  public class TimeTest { 
    public static void main(String args[]) { 
      String text = "2013-12-17 14:05:59"; 
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
       
      try { 
        Date time = sdf.parse(text); 
        System.out.println(time.getTime() / 1000); 
      } catch(ParseException e) { 
        System.out.println(e.getMessage()); 
      } 
    } 
  } 

獲取日期的特定部分
通過Date和SimpleDateFormat兩個類,我們已經(jīng)可以實現(xiàn)獲取當前時間戳,日期格式化輸出,格式化日期字符串轉(zhuǎn)Date對象功能,現(xiàn)在還有一個新的需求,如何獲取日期的特定部分,例如當前的小時,當前的天數(shù)等,這就需要用到Calendar類了

  import java.util.Calendar; 
  import java.util.Date; 
  import java.util.GregorianCalendar; 
   
   
  public class TimeTest { 
    public static void main(String args[]) { 
      Date date = new Date(); 
      GregorianCalendar gcalendar = new GregorianCalendar(); 
      gcalendar.setTime(date); 
   
      int year = gcalendar.get(Calendar.YEAR); 
      int month = gcalendar.get(Calendar.MONTH); 
      int day = gcalendar.get(Calendar.DAY_OF_MONTH); 
   
      int hour = gcalendar.get(Calendar.HOUR_OF_DAY); 
      int minute = gcalendar.get(Calendar.MINUTE); 
      int second = gcalendar.get(Calendar.MINUTE); 
   
      System.out.println(year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" 
          + second); 
    } 
  } 


計算兩個日期之間相差的天數(shù)

例如計算2010年4月1號和2009年3月11號之間相差的天數(shù),則可以使用時間和日期處理進行計算。
該程序?qū)崿F(xiàn)的原理為:首先代表兩個特定的時間點,這里使用Calendar的對象進行代表,然后將兩個時間點轉(zhuǎn)換為對應的相對時間,求兩個時間點相對時間的差值,然后除以1天的毫秒數(shù)(24小時X60分鐘X60秒X1000毫秒)即可獲得對應的天數(shù)。實現(xiàn)該示例的完整代碼如下:

import java.util.*;
/**
* 計算兩個日期之間相差的天數(shù)
*/
public class DateExample1 {
public static void main(String[] args) {
//設置兩個日期
//日期:2009年3月11號
Calendar c1 = Calendar.getInstance();
c1.set(2009, 3 - 1, 11);
//日期:2010年4月1號
Calendar c2 = Calendar.getInstance();
c2.set(2010, 4 - 1, 1);
//轉(zhuǎn)換為相對時間
long t1 = c1.getTimeInMillis();
long t2 = c2.getTimeInMillis();
//計算天數(shù)
long days = (t2 - t1)/(24 * 60 * 60 * 1000);
System.out.println(days);
}
}


輸出當前月的月歷

該示例的功能是輸出當前系統(tǒng)時間所在月的日歷,例如當前系統(tǒng)時間是2009年3月10日,則輸出2009年3月的日歷。
該程序?qū)崿F(xiàn)的原理為:首先獲得該月1號是星期幾,然后獲得該月的天數(shù),最后使用流程控制實現(xiàn)按照日歷的格式進行輸出即可。即如果1號是星期一,則打印一個單位的空格,如果1號是星期二,則打印兩個單位的空格,依次類推。打印完星期六的日期以后,進行換行。實現(xiàn)該示例的完整代碼如下:

import java.util.*;
/**
* 輸出當前月的日歷
*/
public class DateExample2{
public static void main(String[] args){
//獲得當前時間
Calendar c = Calendar.getInstance();
//設置代表的日期為1號
c.set(Calendar.DATE,1);
//獲得1號是星期幾
int start = c.get(Calendar.DAY_OF_WEEK);
//獲得當前月的最大日期數(shù)
int maxDay = c.getActualMaximum(Calendar.DATE);
//輸出標題
System.out.println("星期日 星期一 星期二 星期三 星期四 星期五 星期六");
//輸出開始的空格
for(int i = 1;i < start;i++){
System.out.print(" ");
}
//輸出該月中的所有日期
for(int i = 1;i <= maxDay;i++){
//輸出日期數(shù)字
System.out.print(" " + i);
//輸出分隔空格
System.out.print(" ");
if(i < 10){
System.out.print(' ');
}
//判斷是否換行
if((start + i - 1) % 7 == 0){
System.out.println();
}
}
//換行
System.out.println();
}
}

相關文章

  • Java多線程同步工具類CyclicBarrier的使用

    Java多線程同步工具類CyclicBarrier的使用

    本文主要介紹了Java多線程同步工具類CyclicBarrier的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • JAVA調(diào)用JavaScript方法代碼示例

    JAVA調(diào)用JavaScript方法代碼示例

    之前在一次機緣巧合的情況下,需要時用JAVA執(zhí)行js方法,查閱了一些文檔,找到了相關解決方法,這里和大家分享一下,這篇文章主要給大家介紹了關于JAVA調(diào)用JavaScript方法的相關資料,需要的朋友可以參考下
    2023-09-09
  • 基于SpringBoot開機啟動與@Order注解

    基于SpringBoot開機啟動與@Order注解

    這篇文章主要介紹了SpringBoot開機啟動與@Order注解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java CountDownLatch的源碼硬核解析

    Java CountDownLatch的源碼硬核解析

    對于并發(fā)執(zhí)行,Java中的CountDownLatch是一個重要的類。為了更好的理解CountDownLatch這個類,本文將通過例子和源碼帶領大家深入解析這個類的原理,感興趣的可以學習一下
    2022-10-10
  • spring boot 1.5.4 集成shiro+cas,實現(xiàn)單點登錄和權限控制

    spring boot 1.5.4 集成shiro+cas,實現(xiàn)單點登錄和權限控制

    這篇文章主要介紹了spring boot 1.5.4 集成shiro+cas,實現(xiàn)單點登錄和權限控制,需要的朋友可以參考下
    2017-06-06
  • Spring詳解四種加載配置項的方法

    Spring詳解四種加載配置項的方法

    這篇文章主要給大家介紹了關于springboot加載配置項的四種方式,文中通過示例代碼介紹的非常詳細,對大家學習或者使用springboot具有一定的參考學習價值,需要的朋友可以參考下
    2022-06-06
  • java二維碼生成的方法

    java二維碼生成的方法

    這篇文章主要為大家詳細介紹了java二維碼生成的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 舉例講解Java設計模式中的對象池模式編程

    舉例講解Java設計模式中的對象池模式編程

    這篇文章主要介紹了Java設計模式中的對象池模式編程示例分享,對象池模式經(jīng)常在多線程開發(fā)時被用到,需要的朋友可以參考下
    2016-02-02
  • SpringBoot利用自定義json序列化器實現(xiàn)敏感字段數(shù)據(jù)脫敏詳解

    SpringBoot利用自定義json序列化器實現(xiàn)敏感字段數(shù)據(jù)脫敏詳解

    這篇文章主要介紹了SpringBoot利用自定義json序列化器實現(xiàn)敏感字段數(shù)據(jù)脫敏詳解,因為案例代碼用到了hutool提供的DesensitizedUtil數(shù)據(jù)脫敏工具類,這里要引入hutool的依賴,如果你需要自定義 數(shù)據(jù)脫敏的邏輯,可以不引入這個依賴,需要的朋友可以參考下
    2024-01-01
  • MyBatis如何使用PageHelper實現(xiàn)分頁查詢

    MyBatis如何使用PageHelper實現(xiàn)分頁查詢

    這篇文章主要介紹了MyBatis如何使用PageHelper實現(xiàn)分頁查詢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評論

永清县| 高台县| 历史| 福海县| 宾阳县| 区。| 屏东县| 无极县| 姜堰市| 临猗县| 武陟县| 洪江市| 邵阳市| 秦皇岛市| 大丰市| 沁阳市| 金秀| 玉田县| 应城市| 平陆县| 临朐县| 高邑县| 双鸭山市| 延安市| 郸城县| 鸡泽县| 巴南区| 博乐市| 新乡市| 金昌市| 岢岚县| 容城县| 溧阳市| 通山县| 佛坪县| 沙田区| 苍山县| 闽清县| 永安市| 隆尧县| 丰都县|