一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - Java中Date類和Calendar類的常用實例小結(jié)

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

2020-01-02 14:20zinss26914 JAVA教程

這篇文章主要介紹了Java中Date類和Calendar類的常用實例小結(jié),是Java入門學(xué)習(xí)中的基礎(chǔ)知識的運用,需要的朋友可以參考下

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

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

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


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

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

  

?
1
2
3
4
5
6
7
8
9
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)前時間格式化輸出:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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類

  

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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)獲取當(dāng)前時間戳,日期格式化輸出,格式化日期字符串轉(zhuǎn)Date對象功能,現(xiàn)在還有一個新的需求,如何獲取日期的特定部分,例如當(dāng)前的小時,當(dāng)前的天數(shù)等,這就需要用到Calendar類了

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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)換為對應(yīng)的相對時間,求兩個時間點相對時間的差值,然后除以1天的毫秒數(shù)(24小時X60分鐘X60秒X1000毫秒)即可獲得對應(yīng)的天數(shù)。實現(xiàn)該示例的完整代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.*;
/**
* 計算兩個日期之間相差的天數(shù)
*/
public class DateExample1 {
public static void main(String[] args) {
//設(shè)置兩個日期
//日期: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);
}
}


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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.util.*;
/**
* 輸出當(dāng)前月的日歷
*/
public class DateExample2{
public static void main(String[] args){
//獲得當(dāng)前時間
Calendar c = Calendar.getInstance();
//設(shè)置代表的日期為1號
c.set(Calendar.DATE,1);
//獲得1號是星期幾
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();
}
}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产高清日韩 | 久久中文骚妇内射 | 九九九国产在线 | 日韩一级精品视频在线观看 | 免费视频大全 | yellow视频免费观看播放 | 校花被拖到野外伦小说 | 国产精品久久久久久五月尺 | 欧美在线视频一区在线观看 | 免费超级乱淫播放手机版 | 四虎永久在线精品国产馆v视影院 | 女主被男主做哭失禁高h | 成人在线视频播放 | 国产精品高清视亚洲一区二区 | 国产高清不卡码一区二区三区 | 国产福利不卡视频在免费 | 美女扒开胸罩露出奶了无遮挡免费 | 美女私人影院 | 亚洲精品成人 | 日韩美女强理论片 | 高h文恩好大好爽 | 免费大片| 希岛爱理作品在线观看 | 温柔校草高h | 校园全黄h全肉细节文 | 精品日本三级在线观看视频 | 亚洲v日韩v欧美在线观看 | 极品妖艳许清赵丽全文免费阅读 | 亚洲欧美精品一区二区 | 国产99视频精品免视看7 | 手机看片自拍自自拍日韩免费 | 福利一区在线观看 | 国内精品自产拍在线观看91 | 性关系视频免费网站在线观看 | 国产成人看片免费视频观看 | 国产自拍资源 | 亚洲天堂视频在线观看免费 | 亚洲国内精品久久 | 国产馆 | 日本高清色视频www 日本高清免费观看 | 欧美作爱福利免费观看视频 |