日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

建议大家使用Java 8 的日期、时间,而非java.util.Date

發布時間:2024/4/17 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 建议大家使用Java 8 的日期、时间,而非java.util.Date 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

建議大家使用Java 8 的日期、時間,而非java.util.Date。

詳細原因見:如何在Java 8中愉快地處理日期和時間

總結一下就是,

  java.util.Date 太亂,如 月份從0開始、日期和時間的取舍只有自己知道等等。

  而java.time.LocalDate則只負責日期,java.time.LocalTime則只負責時間,如果需要日期和時間,還可以使用java.time.LocalDateTime

以下是幾個測試:

1 package start; 2 3 import java.time.LocalDate; 4 import java.time.LocalDateTime; 5 import java.time.LocalTime; 6 import java.time.format.DateTimeFormatter; 7 import java.time.temporal.TemporalAdjusters; 8 import java.util.Locale; 9 10 import org.junit.Test; 11 12 public class Start1 { 13 // LocalDate只負責日期 -- 而java.util.Date雖然包裹各種信息,但別人反而不知你實際的取舍。 14 @Test 15 public void r1() { 16 LocalDate now = LocalDate.now(); 17 System.out.println(now); // 2017-02-22 18 19 LocalDate min = LocalDate.MIN; 20 LocalDate max = LocalDate.MAX; 21 22 System.out.println(min);// -999999999-01-01 23 System.out.println(max);// +999999999-12-31 24 } 25 26 // LocalTime只負責時間,不負責日期。 27 @Test 28 public void r2() { 29 LocalTime noon = LocalTime.NOON; 30 System.out.println(noon); // 12:00 31 System.out.println(LocalTime.MIDNIGHT); // 00:00 32 System.out.println(LocalTime.now());// 15:53:55.036 33 34 } 35 36 // LocalDate獲取年月日 37 @Test 38 public void r3() { 39 LocalDate r = LocalDate.of(2012, 11, 27); 40 System.out.println(r); 41 System.out.println(r.getYear());// 2012 42 System.out.println(r.getMonthValue());// 11 43 System.out.println(r.getMonth());// NOVEMBER 44 System.out.println(r.getDayOfYear());// 332 45 System.out.println(r.getDayOfMonth());// 27 46 System.out.println(r.getDayOfWeek());// TUESDAY 47 } 48 49 // LocalDate獲取年月的最后一天/第一天 50 @Test 51 public void r31() { 52 LocalDate now = LocalDate.now(); 53 LocalDate withDayOfMonth = now.withDayOfMonth(1);// 修改月的天 54 System.out.println(withDayOfMonth); 55 LocalDate firstday = now.with(TemporalAdjusters.firstDayOfMonth()); 56 System.out.println(firstday); 57 LocalDate lastday = now.with(TemporalAdjusters.lastDayOfMonth()); 58 System.out.println(lastday); 59 60 LocalDate lastdayofyear = now.with(TemporalAdjusters.lastDayOfYear()); 61 System.out.println(lastdayofyear); 62 } 63 64 // LocalDate解析字符串 65 @Test 66 public void r4() { 67 LocalDate date = LocalDate.parse("2017-11-27"); 68 System.out.println(date);// 2017-11-27 69 70 // ##### 71 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu/MM/dd"); 72 LocalDate date2 = LocalDate.parse("2017/11/27", formatter); 73 System.out.println(date2); 74 75 // ###### 76 // DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("uuuu/MM/dd", Locale.CHINESE); 77 DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("MM/dd/uuuu", Locale.CANADA_FRENCH); 78 LocalDate date3 = LocalDate.parse("11/27/2017", formatter3); 79 System.out.println(date3); 80 } 81 82 @Test 83 public void r5() { 84 LocalTime now = LocalTime.now(); 85 System.out.println(now); 86 LocalTime r = LocalTime.of(22, 18); 87 // LocalTime r = LocalTime.of(22, 18, 57); 88 System.out.println(r.getHour());// 22 89 System.out.println(r.getMinute());// 18 90 System.out.println(r.getSecond());// 0 91 System.out.println(r.getNano());// 0 92 } 93 94 @Test 95 public void r6() { 96 LocalTime time = LocalTime.parse("22:18:59"); 97 System.out.println(time); 98 99 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm/ss"); 100 LocalTime t = LocalTime.parse("19:30/31", formatter); 101 System.out.println(t); 102 103 // time.plus() 104 // time.minus() 105 } 106 107 @Test 108 public void r7() { 109 LocalDateTime now = LocalDateTime.now(); 110 System.out.println(now); 111 String str = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.SIMPLIFIED_CHINESE)); 112 System.out.println(str); 113 114 // now.plus() 115 // now.minus() 116 LocalDateTime withHour = now.withHour(22); // 修改了Hour 117 System.out.println(withHour); 118 LocalDateTime withMonth = now.withMonth(8); 119 System.out.println(withMonth); // 修改了Month 120 } 121 122 } View Code

?

引用:

JDBC最新JDBC映射將把數據庫的日期類型和Java 8的新類型關聯起來:SQL -> Java -------------------------- date -> LocalDate time -> LocalTime timestamp -> LocalDateTime再也不會出現映射到java.util.Date其中日期或時間某些部分為0的情況了。

?

?

另外,關于如何正確的存儲日期和時間,建議使用絕對時間,即 System.currentTimeMillis()?得到的值,存為BigInt或者Real類型即可。

這樣就不再需要考慮時區轉換等問題!

詳見:如何正確地處理時間

?

轉載于:https://www.cnblogs.com/larryzeal/p/6432512.html

總結

以上是生活随笔為你收集整理的建议大家使用Java 8 的日期、时间,而非java.util.Date的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。