摘要:瞬間可用毫秒值來(lái)表示,它是距歷元即格林威治標(biāo)準(zhǔn)時(shí)間年月日的,格里高利歷的偏移量。創(chuàng)建對(duì)象常用方法返回當(dāng)前對(duì)象的一些日期信息獲得當(dāng)前日期的對(duì)象根據(jù)日歷的規(guī)則,為給定的日歷字段添加或減去指定的時(shí)間量。
日期格式化前言
Date類(lèi)表示特定的瞬間精確到毫秒,不過(guò)從API可以看出很多的方法已經(jīng)廢棄了,這個(gè)類(lèi)已經(jīng)在過(guò)多使用了,不過(guò)還是需要了解一下的,為了后面的學(xué)習(xí)做鋪墊
構(gòu)造方法
new Date()
long getTime() 返回計(jì)算機(jī)上面的時(shí)間,返回的是毫秒
setTime(long s) 用給定的毫秒值s設(shè)置時(shí)間
實(shí)例
Date date=new Date(); System.out.println(date.getTime());
SimpleDateFormat
這個(gè)類(lèi)是一個(gè)簡(jiǎn)單的格式化日期的類(lèi),繼承與DateFormat,相對(duì)于父類(lèi)來(lái)說(shuō)使用簡(jiǎn)單
構(gòu)造方法
new SimpleDateFormat() 使用默認(rèn)的格式化模板創(chuàng)建對(duì)象
new SimpleDateFormat(String pattern) 使用指定的格式化模板創(chuàng)建對(duì)象
常用的方法
String format(Date date) 將給定的日期格式化指定的模板的樣式,比如2017-01-29 23:22:11
applyPattern(String pattern) 將給定的格式應(yīng)用于此日期的格式,相當(dāng)于直接使用new Date(String pattern)
Date parse(String d) 將給定的格式化的日期格式字符串轉(zhuǎn)換成Date對(duì)象,需要注意的是轉(zhuǎn)化的時(shí)候定義的模板一定要和字符串的日期格式的模板一樣,否則將會(huì)解析不正確的形式
常用的日期格式化的模板實(shí)例
使用默認(rèn)的模板格式化日期
SimpleDateFormat dateFormat=new SimpleDateFormat(); //默認(rèn)的格式 String formateString=dateFormat.format(date); //格式化當(dāng)前的日期 System.out.println(formateString);
使用指定的模板格式化日期
String model="yyyy-MM-dd-FF HH:mm:ss"; //指定格式化的模板 SimpleDateFormat dateFormat2=new SimpleDateFormat(model); System.out.println(dateFormat2.format(date));
將格式化的日期轉(zhuǎn)換成Date類(lèi)型的,使用的parse(String s),需要注意的是,下面定義的模板一定要和給定的格式化后的日期格式一樣,否則轉(zhuǎn)換后Date類(lèi)型的毫秒值可能不正確
String d = "2017-06-12 22:34:19"; //給出格式化后的日期 String pattern = "yyyy-MM-dd HH:mm:ss"; //按照上面的日期格式定義模板,這個(gè)一定要完全和上面的一樣,否則轉(zhuǎn)換不正確 SimpleDateFormat dateFormat = new SimpleDateFormat(pattern); try { Date date = dateFormat.parse(d); //解析成Date類(lèi)型 System.out.println(dateFormat.format(date)); } catch (ParseException e) { System.err.println("解析錯(cuò)誤"); }
綜合使用:計(jì)算時(shí)間差
Scanner scanner=new Scanner(System.in); System.out.println("請(qǐng)輸入年-月-日"); String startTime=scanner.next(); System.out.println("請(qǐng)輸入結(jié)束時(shí)間(年-月-日)"); String endTime=scanner.next(); String moudle="yyyy-MM-dd"; //定義時(shí)間模板 //創(chuàng)建指定模板的解析 SimpleDateFormat dateFormat=new SimpleDateFormat(moudle); Date startDate=dateFormat.parse(startTime);//解析開(kāi)始時(shí)間 Date endDate =dateFormat.parse(endTime);//解析結(jié)束時(shí)間 long time=startDate.getTime()-endDate.getTime(); //返回兩個(gè)時(shí)間的差,毫秒 int day=(int)(time/1000/60/60/24); //轉(zhuǎn)化為天數(shù),1秒等于1000毫秒,一分鐘等于60秒,一小時(shí)等于60分鐘,一天等于24小時(shí) System.out.println(day);
Calendar
Calendar 類(lèi)是一個(gè)抽象類(lèi),它為特定瞬間與一組諸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日歷字段之間的轉(zhuǎn)換提供了一些方法,并為操作日歷字段(例如獲得下星期的日期)提供了一些方法。瞬間可用毫秒值來(lái)表示,它是距歷元(即格林威治標(biāo)準(zhǔn)時(shí)間 1970 年 1 月 1 日的 00:00:00.000,格里高利歷)的偏移量。
創(chuàng)建對(duì)象
Calendar.getInstance()
常用方法
int get(int field) 返回當(dāng)前對(duì)象的一些日期信息
Date getTime() 獲得當(dāng)前日期的Date對(duì)象
add(int field,int amount) 根據(jù)日歷的規(guī)則,為給定的日歷字段添加或減去指定的時(shí)間量。例如,要從當(dāng)前日歷時(shí)間減去 5 天,可以通過(guò)調(diào)用以下方法做到這一點(diǎn):add(Calendar.DAY_OF_MONTH, -5)。
setTime(Date date) 使用給定的Date對(duì)象,設(shè)置Calendar時(shí)間
實(shí)例
get方法獲取一些字段的值
Calendar calendar = Calendar.getInstance(); // 創(chuàng)建對(duì)象 System.out.println(calendar.get(Calendar.YEAR));// 獲取年份 System.out.println(calendar.get(Calendar.MONTH) + 1);// 月,從0開(kāi)始,即是輸出5表示6月 System.out.println(calendar.get(Calendar.DATE));// 獲取一個(gè)月中的第幾天 System.out.println(calendar.get(Calendar.HOUR)); // 小時(shí) System.out.println(calendar.get(Calendar.MINUTE)); // 分鐘 System.out.println(calendar.get(Calendar.SECOND)); // 秒 System.out.println(calendar.get(Calendar.AM_PM)); // 獲得是上午還是下午AM=0,PM=1 System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); // 一個(gè)月中的第幾天 System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // 一周中的第幾天,星期日是第一天 System.out.println(calendar.get(Calendar.DAY_OF_YEAR));// 一年中的第幾天 System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 一天中的第幾小時(shí) if (calendar.get(Calendar.AM_PM) == Calendar.AM) { System.out.println("現(xiàn)在是上午"); } if (calendar.get(Calendar.MONTH) + 1 == Calendar.JULY) { System.out.println("現(xiàn)在是6月"); }
Date getTime()方法的使用
Calendar calendar=Calendar.getInstance(); Date date=calendar.getTime(); //獲得Date對(duì)象 String pattern="yyyy-MM-dd HH:mm:ss"; SimpleDateFormat dateFormat=new SimpleDateFormat(pattern); System.out.println(dateFormat.format(date));
add(int field,int amount)方法的使用
Calendar calendar=Calendar.getInstance(); calendar.add(Calendar.DATE, -2); System.out.println(calendar.get(Calendar.DATE));
綜合實(shí)例:計(jì)算出當(dāng)前的準(zhǔn)確日期
Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(calendar.MONTH) + 1; // 從0開(kāi)始算,因此加1 int date = calendar.get(Calendar.DATE); int week = calendar.get(Calendar.WEEK_OF_MONTH) + 1; // 從周日開(kāi)始算,因此加1 int hour = calendar.get(Calendar.HOUR); int minute = calendar.get(Calendar.MINUTE); int seconds = calendar.get(Calendar.SECOND); if (calendar.get(Calendar.AM_PM) == Calendar.AM) { System.out.println("現(xiàn)在是" + year + "年" + month + "月" + date + "號(hào)" + "星期" + week + "上午" + hour + "點(diǎn)" + minute + "分" + seconds + "秒"); } else { System.out.println("現(xiàn)在是" + year + "年" + month + "月" + date + "號(hào)" + "星期" + week + "下午" + hour + "點(diǎn)" + minute + "分" + seconds + "秒"); }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/70109.html
摘要:前言前面一篇文章寫(xiě)了如何安全的使用里面介紹了如何處理日期時(shí)間,以及如何保證線(xiàn)程安全,及其介紹了在中的處理時(shí)間日期默認(rèn)就線(xiàn)程安全的類(lèi)。引入了全新的日期時(shí)間格式工具,線(xiàn)程安全而且使用方便。 前言 前面一篇文章寫(xiě)了《SimpleDateFormat 如何安全的使用?》, 里面介紹了 SimpleDateFormat 如何處理日期/時(shí)間,以及如何保證線(xiàn)程安全,及其介紹了在 Java 8 中的處...
摘要:處理日期日歷和時(shí)間的不足之處將設(shè)定為可變類(lèi)型,以及的非線(xiàn)程安全使其應(yīng)用非常受限。最完整的日期時(shí)間,包含時(shí)區(qū)和相對(duì)或格林威治的時(shí)差。獲取當(dāng)前的日期中的用于表示當(dāng)天日期。 簡(jiǎn)介 伴隨 lambda表達(dá)式、streams 以及一系列小優(yōu)化,Java 8 推出了全新的日期時(shí)間API。 Java處理日期、日歷和時(shí)間的不足之處:將 java.util.Date 設(shè)定為可變類(lèi)型,以及 SimpleD...
摘要:轉(zhuǎn)載語(yǔ)言的和類(lèi)語(yǔ)言的日歷日期,和日期格式組成了標(biāo)準(zhǔn)的一個(gè)基本但是非常重要的部分。值得注意的是我們使用了構(gòu)造函數(shù)創(chuàng)建一個(gè)日期對(duì)象,這個(gè)構(gòu)造函數(shù)沒(méi)有接受任何參數(shù),而這個(gè)構(gòu)造函數(shù)在內(nèi)部使用了方法來(lái)從系統(tǒng)獲取日期。 「轉(zhuǎn)載」Java語(yǔ)言的Calendar和Date類(lèi) Java 語(yǔ)言的Calendar(日歷),Date(日期),和DateFormat(日期格式)組成了Java標(biāo)準(zhǔn)的一個(gè)基本但是...
摘要:類(lèi)是一個(gè)抽象類(lèi),它為特定瞬間與一組諸如等日歷字段之間的轉(zhuǎn)換提供了一些方法,并為操作日歷字段例如獲得下星期的日期提供了一些方法。是不變的日期時(shí)間對(duì)象代表一個(gè)日期時(shí)間,往往被視為年月日時(shí)分秒。獲得實(shí)例的日期和時(shí)間。 時(shí)區(qū) GMT(Greenwich Mean Time):格林尼治時(shí)間,格林尼治標(biāo)準(zhǔn)時(shí)間的正午是指當(dāng)太陽(yáng)橫穿格林尼治子午線(xiàn)時(shí)(也就是在格林尼治上空最高點(diǎn)時(shí))的時(shí)間。 UTC(U...
摘要:合并日期和時(shí)間這個(gè)復(fù)合類(lèi)名叫,是和的合體。截至目前,我們介紹的這些日期時(shí)間對(duì)象都是不可修改的,這是為了更好地支持函數(shù)式編程,確保線(xiàn)程安全,保持領(lǐng)域模式一致性而做出的重大設(shè)計(jì)決定。 新的日期和時(shí)間API Java的API提供了很多有用的組件,能幫助你構(gòu)建復(fù)雜的應(yīng)用。不過(guò),Java API也不總是完美的。我們相信大多數(shù)有經(jīng)驗(yàn)的程序員都會(huì)贊同Java 8之前的庫(kù)對(duì)日期和時(shí)間的支持就非常不理想...
閱讀 3878·2021-09-27 13:36
閱讀 4554·2021-09-22 15:12
閱讀 3063·2021-09-13 10:29
閱讀 1826·2021-09-10 10:50
閱讀 2360·2021-09-03 10:43
閱讀 518·2019-08-29 17:10
閱讀 442·2019-08-26 13:52
閱讀 3249·2019-08-23 14:37