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