|
@@ -89,9 +89,8 @@ Period period = Period.between(l1.toLocalDate(), l2.toLocalDate());
|
|
|
Joda time:
|
|
|
|
|
|
```
|
|
|
-DateTime dt = <span class="hljs-keyword">new</span> DateTime();
|
|
|
+DateTime dt = new DateTime();
|
|
|
Chronology chronology = dt.getChronology();
|
|
|
-<span class="copy-code-btn">复制代码</span>
|
|
|
```
|
|
|
|
|
|
Java time:
|
|
@@ -99,7 +98,6 @@ Java time:
|
|
|
```
|
|
|
LocalDateTime localDateTime = LocalDateTime.now();
|
|
|
Chronology ch = localDateTime.getChronology();
|
|
|
-<span class="copy-code-btn">复制代码</span>
|
|
|
```
|
|
|
|
|
|
表示时区。
|
|
@@ -107,10 +105,9 @@ Chronology ch = localDateTime.getChronology();
|
|
|
Joda time:
|
|
|
|
|
|
```
|
|
|
-DateTime dt = <span class="hljs-keyword">new</span> DateTime();
|
|
|
+DateTime dt = new DateTime();
|
|
|
DateTimeZone dateTimeZone = dt.getZone();
|
|
|
Set<string> zones = DateTimeZone.getAvailableIDs();
|
|
|
-<span class="copy-code-btn">复制代码</span></string>
|
|
|
```
|
|
|
|
|
|
Java time:
|
|
@@ -119,7 +116,6 @@ Java time:
|
|
|
Clock clock = Clock.systemDefaultZone();
|
|
|
ZoneId zoneId = clock.getZone();
|
|
|
Set<string> zones = ZoneId.getAvailableZoneIds();
|
|
|
-<span class="copy-code-btn">复制代码</span></string>
|
|
|
```
|
|
|
|
|
|
从上面可以看到,除了 JSR-310 中没有的 Interval 的定义之外,这两个库在基础概念方面的实现相差不大。
|
|
@@ -144,16 +140,14 @@ Joda time:
|
|
|
|
|
|
```
|
|
|
DateTime dt = <span class="hljs-keyword">new</span> DateTime();
|
|
|
-<span class="hljs-keyword">long</span> mills = dt.getMillis();
|
|
|
-<span class="copy-code-btn">复制代码</span>
|
|
|
+long mills = dt.getMillis();
|
|
|
```
|
|
|
|
|
|
Java time:
|
|
|
|
|
|
```
|
|
|
Clock clock = Clock.systemDefaultZone();
|
|
|
-<span class="hljs-keyword">long</span> mills = clock.millis();
|
|
|
-<span class="copy-code-btn">复制代码</span>
|
|
|
+long mills = clock.millis();
|
|
|
```
|
|
|
|
|
|
这块两个库没有太大的差异:
|
|
@@ -161,27 +155,24 @@ Clock clock = Clock.systemDefaultZone();
|
|
|
Joda time:
|
|
|
|
|
|
```
|
|
|
-DateTime dt = <span class="hljs-keyword">new</span> DateTime();
|
|
|
+DateTime dt = new DateTime();
|
|
|
LocalDateTime localDateTime = dt.toLocalDateTime();
|
|
|
-<span class="copy-code-btn">复制代码</span>
|
|
|
```
|
|
|
|
|
|
Java time:
|
|
|
|
|
|
```
|
|
|
LocalDateTime localDateTime = LocalDateTime.now();
|
|
|
-<span class="copy-code-btn">复制代码</span>
|
|
|
```
|
|
|
|
|
|
Joda time:
|
|
|
|
|
|
```
|
|
|
-DateTime dt = <span class="hljs-keyword">new</span> DateTime();
|
|
|
-<span class="hljs-keyword">int</span> dayOfYear = dt.getDayOfYear();
|
|
|
-<span class="hljs-keyword">int</span> dayOfMonth = dt.getDayOfMonth();
|
|
|
-<span class="hljs-keyword">int</span> dayOfWeek = dt.getDayOfWeek();
|
|
|
-<span class="hljs-keyword">int</span> hourOfDay = dt.getHourOfDay();
|
|
|
-<span class="copy-code-btn">复制代码</span>
|
|
|
+DateTime dt = new DateTime();
|
|
|
+int dayOfYear = dt.getDayOfYear();
|
|
|
+int dayOfMonth = dt.getDayOfMonth();
|
|
|
+int dayOfWeek = dt.getDayOfWeek();
|
|
|
+int hourOfDay = dt.getHourOfDay();
|
|
|
```
|
|
|
|
|
|
Java time:
|
|
@@ -189,37 +180,35 @@ Java time:
|
|
|
```
|
|
|
Clock clock = Clock.systemDefaultZone();
|
|
|
LocalDateTime localDateTime = LocalDateTime.now(clock);
|
|
|
-<span class="hljs-keyword">int</span> dayOfYear = localDateTime.getDayOfYear();
|
|
|
-<span class="hljs-keyword">int</span> dayOfMonth = localDateTime.getDayOfMonth();
|
|
|
-<span class="hljs-keyword">int</span> dayOfWeek = localDateTime.getDayOfWeek().getValue();
|
|
|
-<span class="hljs-keyword">int</span> hourOfDay = localDateTime.getHour();
|
|
|
-<span class="copy-code-btn">复制代码</span>
|
|
|
+int dayOfYear = localDateTime.getDayOfYear();
|
|
|
+int dayOfMonth = localDateTime.getDayOfMonth();
|
|
|
+int dayOfWeek = localDateTime.getDayOfWeek().getValue();
|
|
|
+int hourOfDay = localDateTime.getHour();
|
|
|
```
|
|
|
|
|
|
-获取这些值两个库也没有太大的差异,但是对于一些场景,比如我想获得 "星期四" 这个字符串。 在 Joda 库中,可以 `dt.dayOfWeek().getAsShortText(); // 星期四` 这样获得。在 Java 中, `localDateTime.getDayOfWeek().name(); //THURSDAY` 只能获取到英文。
|
|
|
+获取这些值两个库也没有太大的差异,但是对于一些场景,比如我想获得 "星期四" 这个字符串。 在 Joda 库中,可以 `dt.dayOfWeek().getAsShortText(); // 这样获得。
|
|
|
+在 Java 中, `localDateTime.getDayOfWeek().name(); //THURSDAY` 只能获取到英文。
|
|
|
|
|
|
Joda time 在本地化方面比 Java time做的更好。
|
|
|
|
|
|
Joda time:
|
|
|
|
|
|
```
|
|
|
-DateTime dt = <span class="hljs-keyword">new</span> DateTime();
|
|
|
-dt = dt.plusDays(<span class="hljs-number">2</span>);
|
|
|
-dt = dt.plusHours(<span class="hljs-number">5</span>);
|
|
|
-dt = dt.minusDays(<span class="hljs-number">1</span>);
|
|
|
-dt = dt.minusHours(<span class="hljs-number">2</span>);
|
|
|
-<span class="copy-code-btn">复制代码</span>
|
|
|
+DateTime dt = new DateTime();
|
|
|
+dt = dt.plusDays(2);
|
|
|
+dt = dt.plusHours(5);
|
|
|
+dt = dt.minusDays(1);
|
|
|
+dt = dt.minusHours(2);
|
|
|
```
|
|
|
|
|
|
Java time:
|
|
|
|
|
|
```
|
|
|
LocalDateTime localDateTime = LocalDateTime.now();
|
|
|
-localDateTime = localDateTime.plusDays(<span class="hljs-number">2</span>);
|
|
|
-localDateTime = localDateTime.plusHours(<span class="hljs-number">2</span>);
|
|
|
-localDateTime = localDateTime.minusDays(<span class="hljs-number">1</span>);
|
|
|
-localDateTime = localDateTime.minusHours(<span class="hljs-number">1</span>);
|
|
|
-<span class="copy-code-btn">复制代码</span>
|
|
|
+localDateTime = localDateTime.plusDays(2);
|
|
|
+localDateTime = localDateTime.plusHours(2);
|
|
|
+localDateTime = localDateTime.minusDays(1);
|
|
|
+localDateTime = localDateTime.minusHours(1);
|
|
|
```
|
|
|
|
|
|
日期格式化是日常使用最频繁的功能,下面来对比一下这两者的区别。
|
|
@@ -228,21 +217,20 @@ Joda time:
|
|
|
|
|
|
```
|
|
|
|
|
|
-DateTimeFormatter formatter = DateTimeFormat.forPattern(<span class="hljs-string">"yyyy-MM-dd HH:mm:ss"</span>);
|
|
|
-DateTime dt = <span class="hljs-keyword">new</span> DateTime();
|
|
|
+DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+DateTime dt = new DateTime();
|
|
|
System.out.println(dt.toString(formatter));
|
|
|
|
|
|
-String dateFormat = <span class="hljs-string">"yyyy-MM-dd HH:mm:ss"</span>;
|
|
|
+String dateFormat = "yyyy-MM-dd HH:mm:ss";
|
|
|
System.out.println(dt.toString(dateFormat));
|
|
|
-<span class="copy-code-btn">复制代码</span>
|
|
|
```
|
|
|
|
|
|
Java time:
|
|
|
|
|
|
```
|
|
|
-DateTimeFormatter formatter = DateTimeFormatter.ofPattern(<span class="hljs-string">"yyyy-MM-dd HH:mm:ss"</span>);
|
|
|
-LocalDateTime localDateTime = LocalDateTime.now(); System.out.println(formatter.format(localDateTime));
|
|
|
-<span class="copy-code-btn">复制代码</span>
|
|
|
+DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+LocalDateTime localDateTime = LocalDateTime.now();
|
|
|
+System.out.println(formatter.format(localDateTime));
|
|
|
```
|
|
|
|
|
|
通过上面的对比,可以发现这两个类库都可以完成相同的功能。虽然在细节上是有一些细微的差别。
|
|
@@ -256,9 +244,8 @@ Java time 与 java.util 下的时间类相互转化,可以将 Date 或者 Cale
|
|
|
java.util.Date 转 java.time.LocalDateTime:
|
|
|
|
|
|
```
|
|
|
-Date date = <span class="hljs-keyword">new</span> Date();
|
|
|
+Date date = new Date();
|
|
|
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
|
|
|
-<span class="copy-code-btn">复制代码</span>
|
|
|
```
|
|
|
|
|
|
java.util.Carlendar 转 java.time.LocalDateTime:
|
|
@@ -266,28 +253,26 @@ java.util.Carlendar 转 java.time.LocalDateTime:
|
|
|
```
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
LocalDateTime localDateTime = LocalDateTime.ofInstant(calendar.toInstant(), ZoneId.systemDefault());
|
|
|
-<span class="copy-code-btn">复制代码</span>
|
|
|
```
|
|
|
|
|
|
Joda time 也可以与 java.util.Date 可以进行相互的转化:
|
|
|
|
|
|
```
|
|
|
|
|
|
-DateTime dt = <span class="hljs-keyword">new</span> DateTime();
|
|
|
+DateTime dt = new DateTime();
|
|
|
Date jdkDate = dt.toDate();
|
|
|
|
|
|
-dt = <span class="hljs-keyword">new</span> DateTime(jdkDate);
|
|
|
+dt = new DateTime(jdkDate);
|
|
|
|
|
|
-DateTime dt = <span class="hljs-keyword">new</span> DateTime();
|
|
|
+DateTime dt = new DateTime();
|
|
|
Calendar jdkCal = dt.toCalendar(Locale.CHINESE);
|
|
|
|
|
|
-dt = <span class="hljs-keyword">new</span> DateTime(jdkCal);
|
|
|
+dt = new DateTime(jdkCal);
|
|
|
|
|
|
-DateTime dt = <span class="hljs-keyword">new</span> DateTime();
|
|
|
+DateTime dt = new DateTime();
|
|
|
GregorianCalendar jdkGCal = dt.toGregorianCalendar();
|
|
|
|
|
|
-dt = <span class="hljs-keyword">new</span> DateTime(jdkGCal);
|
|
|
-<span class="copy-code-btn">复制代码</span>
|
|
|
+dt = new DateTime(jdkGCal);
|
|
|
```
|
|
|
|
|
|
## 设计思想
|