欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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


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

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

  

 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類,例如將當(dāng)前時(shí)間格式化輸出:

 

  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); 
    } 
  } 

將文本解析成日期對(duì)象
給定了格式化的時(shí)間字符串,例如“2013-12-17 14:05:59”,需要將其轉(zhuǎn)換成Date對(duì)象,便于獲取時(shí)間戳獲取進(jìn)行其它格式化操作,可以繼續(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兩個(gè)類,我們已經(jīng)可以實(shí)現(xiàn)獲取當(dāng)前時(shí)間戳,日期格式化輸出,格式化日期字符串轉(zhuǎn)Date對(duì)象功能,現(xiàn)在還有一個(gè)新的需求,如何獲取日期的特定部分,例如當(dāng)前的小時(shí),當(dāng)前的天數(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); 
    } 
  } 


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

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

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


輸出當(dāng)前月的月歷

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

import java.util.*;
/**
* 輸出當(dāng)前月的日歷
*/
public class DateExample2{
public static void main(String[] args){
//獲得當(dāng)前時(shí)間
Calendar c = Calendar.getInstance();
//設(shè)置代表的日期為1號(hào)
c.set(Calendar.DATE,1);
//獲得1號(hào)是星期幾
int start = c.get(Calendar.DAY_OF_WEEK);
//獲得當(dāng)前月的最大日期數(shù)
int maxDay = c.getActualMaximum(Calendar.DATE);
//輸出標(biāo)題
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();
}
}

相關(guān)文章

  • Java實(shí)戰(zhàn)之仿天貓商城系統(tǒng)的實(shí)現(xiàn)

    Java實(shí)戰(zhàn)之仿天貓商城系統(tǒng)的實(shí)現(xiàn)

    這篇文章主要介紹了如何利用Java制作一個(gè)基于SSM框架的迷你天貓商城系統(tǒng),文中采用的技術(shù)有JSP、Springboot、SpringMVC、Spring等,需要的可以參考一下
    2022-03-03
  • java中的 toString()方法實(shí)例代碼

    java中的 toString()方法實(shí)例代碼

    toString()方法 相信大家都用到過,一般用于以字符串的形式返回對(duì)象的相關(guān)數(shù)據(jù)。這篇文章主要介紹了java中的 toString()方法,需要的朋友可以參考下
    2017-05-05
  • 詳解Spring Boot 定時(shí)任務(wù)的實(shí)現(xiàn)方法

    詳解Spring Boot 定時(shí)任務(wù)的實(shí)現(xiàn)方法

    最近在用SpringBoot寫一個(gè)關(guān)于定時(shí)項(xiàng)目的時(shí)候遇到一個(gè)問題,下面小編把如何處理定時(shí)任務(wù)的解決思路分享給大家 ,需要的朋友參考下
    2017-05-05
  • RocketMQ根據(jù)Tag進(jìn)行消息過濾

    RocketMQ根據(jù)Tag進(jìn)行消息過濾

    消費(fèi)者訂閱了某個(gè)主題后,Apache RocketMQ 會(huì)將該主題中的所有消息投遞給消費(fèi)者。若消費(fèi)者只需要關(guān)注部分消息,可通過設(shè)置過濾條件在 Apache RocketMQ 服務(wù)端進(jìn)行過濾,只獲取到需要關(guān)注的消息子集,避免接收到大量無效的消息
    2023-02-02
  • SpringBoot中@ConditionalOnProperty的使用及作用詳解

    SpringBoot中@ConditionalOnProperty的使用及作用詳解

    這篇文章主要介紹了SpringBoot中@ConditionalOnProperty的使用及作用詳解,@ConditionalOnProperty通過讀取本地配置文件中的值來判斷 某些 Bean 或者 配置類 是否加入spring 中,需要的朋友可以參考下
    2024-01-01
  • Java方法的返回值及注意事項(xiàng)小結(jié)

    Java方法的返回值及注意事項(xiàng)小結(jié)

    這篇文章主要介紹了Java方法的返回值及注意事項(xiàng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 分析Spring框架之設(shè)計(jì)與實(shí)現(xiàn)資源加載器

    分析Spring框架之設(shè)計(jì)與實(shí)現(xiàn)資源加載器

    Spring框架是由于軟件開發(fā)的復(fù)雜性而創(chuàng)建的。然而,Spring的用途不僅僅限于服務(wù)器端的開發(fā)。從簡(jiǎn)單性、可測(cè)試性和松耦合性角度而言,絕大部分Java應(yīng)用都可以從Spring中受益。今天來分析它的設(shè)計(jì)與實(shí)現(xiàn)資源加載器,從Spring.xml解析和注冊(cè)Bean對(duì)象
    2021-06-06
  • Java設(shè)計(jì)模式之訪問者模式使用場(chǎng)景及代碼示例

    Java設(shè)計(jì)模式之訪問者模式使用場(chǎng)景及代碼示例

    這篇文章主要介紹了Java設(shè)計(jì)模式之訪問者模式使用場(chǎng)景及代碼示例,小編覺得還是挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-11-11
  • Java使用組件編寫窗口實(shí)現(xiàn)網(wǎng)絡(luò)圖片顯示

    Java使用組件編寫窗口實(shí)現(xiàn)網(wǎng)絡(luò)圖片顯示

    這篇文章主要為大家詳細(xì)介紹了Java使用組件編寫窗口實(shí)現(xiàn)網(wǎng)絡(luò)圖片顯示的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • 使用@Value注解從配置文件中讀取數(shù)組

    使用@Value注解從配置文件中讀取數(shù)組

    這篇文章主要介紹了使用@Value注解從配置文件中讀取數(shù)組的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評(píng)論