色综合老司机第九色激情 _中文字幕日韩av资源站_国产+人+亚洲_久久久精品影院_久久久视频免费观看_欧美激情亚洲自拍_亚洲成av人片在线观看香蕉_热草久综合在线_欧美极品第一页_2020国产精品自拍

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 時間相關的類有哪些?

時間相關的類有哪些?

來源:千鋒教育
發布人:zyh
時間: 2023-06-13 09:24:00 1686619440

  全文大約【5400】字,不說廢話,只講可以讓你學到技術、明白原理的純干貨!本文帶有豐富的案例及配圖視頻,讓你更好地理解和運用文中的技術概念,并可以給你帶來具有足夠啟迪的思考......

時間相關的類有哪些

  一. 概念簡介

  在開始學習今天的知識之前,小編有必要先給大家講解一下與今天內容相關的一些概念,否則可能會讓一些小白產生迷惑。

  1.日期和時間的區別

  首先我們得搞清楚,日期和時間的概念并不一樣。日期是指某一天,它不是連續變化的,可以說是離散的。而時間有兩種概念,一種是不帶日期的時間,如10:30:01;另一種是帶日期的時間,如2023-01-01 15:11:40。只有帶日期的時間,才能唯一確定某個時刻,而不帶日期的時間是無法確定一個唯一時刻的。

  2.本地時間

  本地時間其實就是每個地方,當前所在國家所采用的標準時間。比如我們國家就是采用的北京時間,只要是在中國大陸,我們說晚上8:00見,這個8:00指的就是北京時間。即使我們國家的時區,其實包括了從東五區到東九區共5個時區,但我們全國都是統一采用的東八區的區時,這樣各地區人員之間的交流才不會產生歧義。但如果是在別的國家,那這個本地時間,就是他們國家的標準區時了,所以每個國家的標準區時可能是不同的。

  3.時區表示法

  我們初中學地里的時候,就學過時區的概念,小編這里就不多講了。在計算機中,如果我們想準確地確定一個時間,需要把本地時間和時區結合在一起才行。其中時區有如下幾種表示方式:

  3.1    GMT或UTC加時區偏移表示法:如GMT+08:00 或 UTC+08:00,就表示東八區的時間。因為北京時區是東八區,領先UTC 8個小時,所以將UTC裝換成北京時間時,要加上8小時。GMT(Greenwich Mean Time)是格林威治標準時間,UTC(Universal Time Coordinated)是世界統一時間或世界標準時間,GMT和UTC其實基本是等價的,它們都是英國倫敦的本地時間。但UTC使用了更精確的原子鐘計時,每隔幾年會有一個閏秒,不過我們在開發時可以忽略兩者的誤差,因為計算機的時鐘在聯網時會自動與時間服務器同步時間。

  3.2    時區縮寫表示法:如CST是China Standard Time的縮寫,即中國標準時間。但CST也是美國中部時間Central Standard Time USA的縮寫,因此有些縮寫容易產生混淆,開發時盡量不要使用縮寫形式。

  3.3    洲/城市表示法:如Asia/Shanghai,表示上海所在地的時區。我們要特別注意,城市名稱并不是任意的城市,而是由國際標準組織規定的城市。

  4.本地化

  本地化并不只包括時間這一種信息,還包括一個國家或地區所采用的日期、時間、數字、貨幣等各種信息的格式,開發時通常使用Locale進行表示。Locale由“語言_國家”的字母縮寫構成,如“zh_CN”就表示“中文+中國”,“en_US”表示“英文+美國”。其中語言是小寫,國家是大寫。

  而對于不同國家或地區的Locale日期部分來說,如中國和美國的本地時間表示方式如下:

  ● zh_CN:2023-01-24

  ● en_US:01/24/2023

  5.夏令時

  夏令時(Daylight Saving Time:DST),也叫夏時制,又稱“日光節約時制”,是一種為了節約能源而人為規定地方時間的制度。一般在天亮早的夏季人為將時間調快一小時,可以使人早起早睡,減少照明量,以充分利用光照資源,從而節約照明用電。

  我們國家曾經實行過一段時間夏令時,但在1992年就廢除了,不過美國人到現在還在使用。所以涉及到跨國應用開發時,相關時間的換算可能會有點復雜。因為涉及到夏令時,相同的時區,如果表示的方式不同,轉換出的時間也是不同的。

  6.Epoch Time時間起點

  Epoch Time是一個固定的通用時間,即世界標準時間(UTC) 1970-01-01 00:00:00 UTC,它是計算機里時間開始的起點,該起點被記為0,而1970年以前的時間被認為是負數。我們知道,現實世界的時間誰也不知道是從什么時候開始的,但是計算機發明的時間并不長,為了方便大家進行各種開發和計算,于是國際標準委員會就給計算機設置了一個時間的起點。以這個時間為起點,每過去一秒,該數值就加1,這樣我們就可以算出對應的公歷時間日期(不包括閏秒)。Epoch Time在不同的編程語言中,會有幾種不同的存儲方式:

  ● 以秒為單位的整數:1574208900,缺點是精度只能到秒;

  ● 以毫秒為單位的整數:1574208900123,最后3位表示毫秒數;

  ● 以秒為單位的浮點數:1574208900.123,小數點后表示零點幾秒。

  7.時間戳

  時間戳(timestamp),也稱為Unix時間 或 POSIX時間,它是一種時間表示方式。表示從1970年1月1日0時0分0秒(格林尼治時間)開始,一直到現在所經過的秒數或毫秒數。在Java一般是用long類型來存儲該值,但在別的編程語言中有可能是使用float類型。比如1574208900就表示從1970年1月1日零點開始,到2019年11月20日8點15分截止,一共經歷了1574208900秒,所以換算成北京時間就是:1574208900 = 北京時間2019-11-20 8:15:00。如果我們要獲取當前的時間戳,在Java中可以使用System.currentTimeMillis()方法。

  從本質上來說,時間戳就是個時間差值,其值與時區無關。比如在UTC標準下,時間起點的時間戳就是timestamp = 0 = 1970-1-1 00:00:00 UTC+0:00,此時對應的北京時間是timestamp = 0 = 1970-1-1 08:00:00 UTC+8:00

  了解了以上這些基本概念之后,我們就可以繼續往下學習今天其他的內容了。

  二. Date日期時間類

  1.簡介

  如果我們想在Java中獲取當前的時間,可以使用 java.util.Date類 和 java.util.Calendar類來實現。其中,Date類封裝了系統的日期和時間信息,Calendar類則會根據系統的日歷來填充Date對象。

  java.util.Date是一個表示日期和時間的類,代表了系統特定的時間戳。它是按照UTC時間顯示的,可以精確到毫秒,源碼內部使用long類型進行時間的存儲。我們要注意與java.sql.Date區分,后者是用在數據庫中的類,且是按照本地時區顯示的。Date對象表示的時間,其默認順序是星期、月、日、小時、分、秒、年。

  2.構造方法

  java.util.Date類給我們提供了多個構造方法,如下圖所示:

1683697396642.image

  但是一般在開發時,我們常用的也沒有這么多,一般使用時如下形式:

  ● Date():創建Date對象并初始化,該對象可以獲取本地的當前時間,該時間會精確到毫秒。

  ● Date(long date):構造一個Date對象,并接受一個從1970年1月1日起的毫秒數作為參數。

  3.常用API方法

  當我們構造出來一個Date對象之后,就可以使用它的一些API方法進行時間的操作了,這些常用的API方法如下:

1683697471131.image

  4.使用方法

  4.1 基本使用

  接下來我們先通過一個簡單的案例,來演示一下Date的基本用法。  

import java.util.Date;

public class Demo01 {

public static void main(String[] args) {
//獲取當前時間的時間戳
long currentTimeMillis = System.currentTimeMillis();
System.out.println("時間戳="+currentTimeMillis);

//獲取當前時間對象
Date date=new Date();
//Sat Feb 11 12:04:03 IRKT 2023
System.out.println("當前時間="+date);
//轉為字符串:Sat Feb 11 12:04:03 IRKT 2023
System.out.println("當前時間="+date.toString());
//轉換為本地時區:2023年2月11日 下午12:04:03
System.out.println("當前時間,Locale="+date.toLocaleString());
//轉換為GMT時區:11 Feb 2023 04:04:03 GMT
System.out.println("當前時間,GMT="+date.toGMTString());
}
}

  如果我們想獲取當前時間的時間戳,可以使用System.currentTimeMillis()方法。構造出Date對象之后,我們可以直接打印該對象,就能展示出當前時間,但是這個格式并不一定符合我們中國人的閱讀習慣,后面我們可以對日期進行格式化操作。

  4.2 其他用法

  除了上面這些基本用法之外,Date還有其他的一些用法。  

import java.util.Date;

public class Demo01 {

public static void main(String[] args) {
//獲取當前時間對象
Date date=new Date();
//獲取年月日
System.out.println("年="+(date.getYear() + 1900)); // 必須加上1900
System.out.println("月="+(date.getMonth() + 1)); // 0~11,必須加上1
System.out.println("日="+date.getDate()); // 1~31,不能加1
System.out.println("時="+date.getHours()); // 0~23
System.out.println("分="+date.getMinutes()); // 0~59,不能加1
System.out.println("秒="+date.getSeconds()); // 0~59,不能加1
System.out.println("時間戳="+date.getTime()); // 時間戳,毫秒值

//計算自己已經活了多少天,1990年01月31日
//構造對象的另一個方法,已過時。year:要減去1900,月份從0開始,0-11;日期是1-31
Date d1 = new Date(1990-1900, 2-1, 31);
Date d2 = new Date();
long time = d2.getTime() - d1.getTime();
System.out.println("已活天數="+time/1000/60/60/24);


}
}

  另外我們還要注意,getYear()方法返回的年份必須加上1900;getMonth()方法返回的月份是011,分別表示112月,所以要加1;而getDate()方法返回的日期范圍是1~31,就不能加1。

  在打印本地時區表示的日期和時間時,不同的計算機可能會有不同的展示結果,后面我們可以使用SimpleDateFormat設置出我們想要的日期時間格式。

  4.3 統計時間差

  有時候我們要統計某個功能的執行時間,此時就可以用該功能結束時的時間,減去開始時的時間,得到一個時間差,這就是該功能的執行時間。  

import java.util.Date;

public class Demo03 {

public static void main(String[] args) {
//獲取當前時間對象
//開始時間
Date startDate=new Date();

for(int i=0;i<100000;i++) {
System.out.println("循環次數"+i);
}

//結束時間
Date endDate=new Date();
//計算時間差
long time = endDate.getTime() - startDate.getTime();
System.out.println("10w次循環的執行時間是 "+time+" 毫秒");
}

}

  三. Calendar日歷類

  1.簡介

  Calendar類是Java時間類Date的擴展。相比Date,它擁有更強大的功能,主要是多了可以做簡單日期和時間運算的功能,且在實現方式上也比Date類更復雜一些。Calendar可以用來計算日期,比如說計算下個月的日期,或者兩個月前的日期等。

  Calendar類是一個抽象類,我們在實際使用時需要實現特定的子類,一般使用getInstance()方法創建即可。Calendar類有幾個主要的子類,包括java.util.GregorianCalendar和java.util.TimeZone。其中GregorianCalendar類提供了標準的日歷系統,可以用來計算未來或過去某天的日期。TimeZone類則可以用來在不同的時區之間,轉換日期和時間。

  2.Calendar常量字段

  Calendar中有以下幾個常用的常量字段,用于表示不同的意義。

1683699294252.image

  3.Calendar常用方法

  除了以上常用的常量字段之外,Calendar還有一些常用的方法,如下表所示:

1683699847425.image

1683701465410.image

  Calendar對象可以調用set()方法將日歷翻到任何一個時間,當參數 year取負數時表示是公元前。調用 get()方法可以獲取年、月、日等時間信息,field參數的值是前面講過的Calendar靜態常量。

  4.構建Calendar對象

  Calendar類是抽象類,所以我們不能通過new的方式來構建Calendar對象。在實際使用時,我們一般是要實現特定的子類,經常是使用getInstance()方法進行創建。 

import java.util.Calendar;

public class Demo04 {

public static void main(String[] args) {
//默認是當前日期
Calendar c1 = Calendar.getInstance();
System.out.println("c1="+c1);

//創建一個代表2023年2月2日的Calendar對象
Calendar c2 = Calendar.getInstance();
c2.set(2023, 2-1, 2);
System.out.println("c2="+c2);
}
}

  5.獲取當前時間

  獲取到Calendar對象之后,我們可以獲取到當前日期對象的年月日時分秒等信息。  

import java.util.Calendar;

public class Demo05 {

public static void main(String[] args) {
// 獲取當前時間
Calendar c = Calendar.getInstance();
int y = c.get(Calendar.YEAR);
//月份要加1
int m = 1 + c.get(Calendar.MONTH);
int d = c.get(Calendar.DAY_OF_MONTH);
int w = c.get(Calendar.DAY_OF_WEEK);
int hh = c.get(Calendar.HOUR_OF_DAY);
int mm = c.get(Calendar.MINUTE);
int ss = c.get(Calendar.SECOND);
int ms = c.get(Calendar.MILLISECOND);
//2023-2-11 7 18:10:59.847
System.out.println(y + "-" + m + "-" + d + " " + w + " " + hh + ":" + mm + ":" + ss + "." + ms);
}
}

    我們要注意,Calendar是通過get()方法獲取年月日等信息的,其中返回的年份不必轉換,返回的月份仍要加1,返回的星期要特別注意,1~7分別表示周日、周一、……周六。

  6. 設置時間

  我們通過Calendar.getInstance()方法獲取到Calendar對象后,獲取到的其實就是當前時間。如果我們想設置某個特定的日期和時間,需要先用clear()方法清除掉之前所有的字段。  

import java.util.Calendar;

public class Demo06 {

public static void main(String[] args) {
// 設置時間
Calendar c = Calendar.getInstance();
// 清除所有
c.clear();
// 設置2023年
c.set(Calendar.YEAR, 2023);
// 設置2月(0~11)
c.set(Calendar.MONTH, 1);
// 設置2日
c.set(Calendar.DATE, 2);
// 設置時間
c.set(Calendar.HOUR_OF_DAY, 21);
c.set(Calendar.MINUTE, 22);
c.set(Calendar.SECOND, 23);
//Thu Feb 02 21:22:23 IRKT 2023
System.out.println("date="+c.getTime());
}

}

  我們可以利用Calendar.getTime()方法,將一個Calendar對象轉換成Date對象,后面我們就可以用SimpleDateFormat進行格式化操作了。

  四. GregorianCalendar類

  1.簡介

  Java中除了有Calendar類實現了公歷日歷,還有一個子類GregorianCalendar。在GregorianCalendar類中,定義了兩個字段:AD和BC,分別代表公歷定義的兩個時代。GregorianCalendar中的屬性和方法與Calendar類似,小編就不再贅述了,接下來我們直接通過一個案例來進行展示其用法。

  2.基本用法

  這里我們設計一個案例,來判斷當前年份是閏年還是平年。

import java.util.Calendar;
import java.util.GregorianCalendar

public class Demo05 {

public static void main(String[] args) {
//定義一個月份數組
String months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };

int year;

// 使用當前時間和日期,初始化Gregorian日歷對象,默認為本地時間和時區
GregorianCalendar gcalendar = new GregorianCalendar();
// 顯示當前時間和日期的信息
System.out.print("Date:");
System.out.print(months[gcalendar.get(Calendar.MONTH)]);
System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
System.out.println(year = gcalendar.get(Calendar.YEAR));

System.out.print("Time:");
System.out.print(gcalendar.get(Calendar.HOUR) + ":");
System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
System.out.println(gcalendar.get(Calendar.SECOND));

//判斷當前年份是否為閏年
if (gcalendar.isLeapYear(year)) {
System.out.println("當前年份是閏年");
} else {
System.out.println("當前年份是平年");
}
}
}
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
色综合老司机第九色激情 _中文字幕日韩av资源站_国产+人+亚洲_久久久精品影院_久久久视频免费观看_欧美激情亚洲自拍_亚洲成av人片在线观看香蕉_热草久综合在线_欧美极品第一页_2020国产精品自拍
eeuss鲁片一区二区三区在线观看| 91啪亚洲精品| 狠狠久久亚洲欧美| 久久久精品综合| 成人自拍视频在线观看| 久久尤物电影视频在线观看| 国产在线一区二区| 亚洲精品日韩综合观看成人91| av电影一区二区| 日韩av一区二区三区四区| 亚洲精品在线三区| 欧美日本在线一区| 色婷婷av一区二区三区之一色屋| 香蕉成人伊视频在线观看| 成人三级伦理片| a在线欧美一区| 日韩无一区二区| 亚洲国产高清不卡| 亚洲一区二区偷拍精品| 蜜臀av性久久久久蜜臀aⅴ| 日本成人在线看| 国产精品白丝jk黑袜喷水| 99久久精品国产毛片| 欧美视频一区在线观看| 国产欧美中文在线| 夜夜精品浪潮av一区二区三区| 午夜精品久久久久久| 国精产品一区一区三区mba视频| heyzo一本久久综合| 91精品国产综合久久精品| 亚洲欧美自拍偷拍色图| 精品在线观看免费| 色94色欧美sute亚洲线路二| 欧美一区二区国产| 三级在线观看一区二区| 91首页免费视频| 国产精品国产三级国产有无不卡 | 国产精品污www在线观看| 秋霞午夜av一区二区三区| 成人一道本在线| 欧美国产日本视频| 国产精品18久久久| 精品免费一区二区三区| 精品一区二区免费在线观看| 欧美精品久久天天躁| 美女mm1313爽爽久久久蜜臀| 色诱视频网站一区| 手机精品视频在线观看| 日韩精品资源二区在线| 国内精品国产三级国产a久久| 久久香蕉国产线看观看99| 国产一区二区三区在线观看免费| 国产亚洲欧美日韩日本| 欧美三级在线看| 国产成人h网站| 精品一区二区三区久久久| 自拍偷在线精品自拍偷无码专区| 欧美一级黄色录像| 91碰在线视频| 成人在线一区二区三区| 久久电影国产免费久久电影| 日韩精品91亚洲二区在线观看| 婷婷综合久久一区二区三区| 中文字幕一区在线观看| 国产精品二三区| 五月天视频一区| 麻豆精品一区二区| 日韩高清在线观看| 紧缚捆绑精品一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎 | 在线不卡免费av| 欧美区在线观看| 日韩一区二区精品葵司在线| 56国语精品自产拍在线观看| 日韩午夜电影在线观看| 国产精品久久久久一区二区三区| 久久久久国色av免费看影院| 精品日韩在线观看| 精品美女被调教视频大全网站| 欧美欧美欧美欧美| 91精品国产高清一区二区三区蜜臀| 欧美天天综合网| 7799精品视频| 久久精品综合网| 欧美激情一区三区| 亚洲观看高清完整版在线观看| 亚洲国产成人av| 韩国理伦片一区二区三区在线播放| 国产精品影视网| 欧美亚洲一区二区在线观看| 欧美xxxxxxxxx| 亚洲伦理在线精品| 极品少妇xxxx偷拍精品少妇| 成人av免费网站| 久久久久久久久久久久电影| 一区av在线播放| 国产91在线|亚洲| 欧美精品第1页| 亚洲国产精品久久人人爱| av不卡一区二区三区| 久久婷婷久久一区二区三区| 亚洲一区二区在线视频| 99re6这里只有精品视频在线观看| 欧美电影免费观看完整版| 午夜伊人狠狠久久| 欧美喷潮久久久xxxxx| 午夜精品一区二区三区免费视频| jlzzjlzz亚洲日本少妇| 成人免费在线播放视频| jizzjizzjizz欧美| 亚洲激情在线播放| 精品视频在线看| 男女性色大片免费观看一区二区 | 欧美日韩一级二级| 亚洲一级电影视频| 欧美大片在线观看| 国内外成人在线| 综合分类小说区另类春色亚洲小说欧美 | 亚洲福利视频三区| 91精品国产欧美一区二区18| 国产麻豆精品theporn| 综合欧美亚洲日本| 26uuu久久综合| 欧美一二区视频| 欧美色综合影院| 国内精品视频一区二区三区八戒| 国产精品五月天| 久久婷婷综合激情| 欧美美女直播网站| 91国偷自产一区二区使用方法| 精品一区二区三区的国产在线播放| 一区二区三区自拍| 亚洲综合在线第一页| 一区二区欧美国产| 一区二区三区四区乱视频| 国产日韩高清在线| 日本一区二区三区dvd视频在线| 欧美一级高清片| 欧美精品一区二区三| 久久九九久精品国产免费直播| 精品国产制服丝袜高跟| 精品国产乱码久久久久久图片| 精品国产一区二区三区四区四| 欧美一区二区三区视频在线| 欧美精品第1页| 国产喷白浆一区二区三区| 中文字幕一区二区三区色视频| 中文字幕制服丝袜一区二区三区 | 强制捆绑调教一区二区| 精品一区免费av| 91在线porny国产在线看| 91视频www| 久久精品综合网| 天天影视网天天综合色在线播放| 精品一区二区av| 欧美精品一二三| 国产精品高潮呻吟久久| 日本中文在线一区| 在线视频国产一区| 精品对白一区国产伦| 日韩国产一二三区| 91丨九色porny丨蝌蚪| 国产亚洲一区二区三区| 日本中文字幕一区二区有限公司| 色猫猫国产区一区二在线视频| 久久久夜色精品亚洲| 久久91精品久久久久久秒播| 日韩区在线观看| 国产成人自拍在线| 欧美变态凌虐bdsm| 国产精品中文欧美| 国产精品无人区| 欧美日韩国产经典色站一区二区三区| 中文字幕一区二| 欧美日韩国产成人在线91| 日韩精品久久理论片| 精品国产一区二区三区久久影院| 久久99精品久久久久久动态图| 26uuu久久综合| 欧美三级日本三级少妇99| 日韩av电影免费观看高清完整版在线观看 | 国产白丝精品91爽爽久久 | 波多野结衣一区二区三区| 一区二区高清在线| 日韩精品一区二区三区中文不卡| 美女一区二区在线观看| 亚洲欧美日韩国产一区二区三区| 91精品国产综合久久精品麻豆| 国产电影精品久久禁18| 亚洲一区二区三区国产| 久久蜜桃av一区精品变态类天堂| 欧美人与z0zoxxxx视频| 91丨porny丨户外露出| 久久机这里只有精品| 亚洲成av人片一区二区| 亚洲图片另类小说| **欧美大码日韩| 亚洲视频免费在线| 亚洲日本欧美天堂| 亚洲一区在线播放|