From a17a5ef5b5fd31861a1876d64a2feea0698d51fd Mon Sep 17 00:00:00 2001 From: YuCheng Hu Date: Thu, 16 Jan 2025 08:31:01 -0500 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=20Java=20=E4=B8=AD=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E6=97=A5=E6=9C=9F=E5=92=8C=E6=97=B6=E9=97=B4=E6=96=87?= =?UTF-8?q?=E7=AB=A0=E8=BF=9B=E8=A1=8C=E8=A7=A3=E8=AF=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/compiler.xml | 1 + .idea/encodings.xml | 2 ++ .../core-java-8-datetime/README.md | 6 ++--- .../core-java-8-datetime/pom.xml | 4 ++-- .../com/baeldung/datetime/CalendarUtils.java | 14 ++++++++++++ .../java/com/baeldung/datetime/DateUtils.java | 19 ++++++++++++++++ .../datetime/UseSimpleDateFormat.java | 15 +++++++++++++ .../com/baeldung/datetime/sql/DateUtils.java | 21 ++++++++++++++++++ .../com/baeldung/datetime/sql/TimeUtils.java | 21 ++++++++++++++++++ .../baeldung/datetime/sql/TimestampUtils.java | 21 ++++++++++++++++++ .../datetime/CalendarUtilsUnitTest.java | 18 +++++++++++++++ .../baeldung/datetime/DateUtilsUnitTest.java | 15 +++++++++++++ .../datetime/UseSimpleDateFormatTest.java | 13 +++++++++++ .../datetime/sql/DateUtilsUnitTest.java | 21 ++++++++++++++++++ .../datetime/sql/TimeUtilsUnitTest.java | 22 +++++++++++++++++++ .../datetime/sql/TimestampUtilsUnitTest.java | 20 +++++++++++++++++ core-java-modules/pom.xml | 1 + 17 files changed, 229 insertions(+), 5 deletions(-) create mode 100644 core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/CalendarUtils.java create mode 100644 core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/DateUtils.java create mode 100644 core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/UseSimpleDateFormat.java create mode 100644 core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/sql/DateUtils.java create mode 100644 core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/sql/TimeUtils.java create mode 100644 core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/sql/TimestampUtils.java create mode 100644 core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/CalendarUtilsUnitTest.java create mode 100644 core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/DateUtilsUnitTest.java create mode 100644 core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseSimpleDateFormatTest.java create mode 100644 core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/sql/DateUtilsUnitTest.java create mode 100644 core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/sql/TimeUtilsUnitTest.java create mode 100644 core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/sql/TimestampUtilsUnitTest.java diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 68701c0c51..9b0082740f 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -33,6 +33,7 @@ + diff --git a/.idea/encodings.xml b/.idea/encodings.xml index f8b10f84d4..6fc7c0eec4 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -15,6 +15,8 @@ + + diff --git a/core-java-modules/core-java-8-datetime/README.md b/core-java-modules/core-java-8-datetime/README.md index 03d2a9609d..77d3148ecb 100644 --- a/core-java-modules/core-java-8-datetime/README.md +++ b/core-java-modules/core-java-8-datetime/README.md @@ -1,8 +1,8 @@ -## Java 8+ Date and Time API +## Java 8+ Date 和 Time API -This module contains articles about the Date and Time API introduced with Java 8. +本模块中包含的内容有关 Java 8 中使用日期和时间的 API。 -### Relevant Articles: +### 相关文章: - [Introduction to the Java 8 Date/Time API](http://www.baeldung.com/java-8-date-time-intro) - [Migrating to the New Java 8 Date Time API](http://www.baeldung.com/migrating-to-java-8-date-time-api) - [Get the Current Date and Time in Java](https://www.baeldung.com/current-date-time-and-timestamp-in-java-8) diff --git a/core-java-modules/core-java-8-datetime/pom.xml b/core-java-modules/core-java-8-datetime/pom.xml index 8cf48fd467..01094bd688 100644 --- a/core-java-modules/core-java-8-datetime/pom.xml +++ b/core-java-modules/core-java-8-datetime/pom.xml @@ -8,9 +8,9 @@ core-java-8-datetime - com.baeldung.core-java-modules + com.ossez.core-java-modules core-java-modules - 0.0.1-SNAPSHOT + 0.0.2-SNAPSHOT diff --git a/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/CalendarUtils.java b/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/CalendarUtils.java new file mode 100644 index 0000000000..6f091ad50b --- /dev/null +++ b/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/CalendarUtils.java @@ -0,0 +1,14 @@ +package com.baeldung.datetime; + +import java.text.ParseException; +import java.util.Calendar; +import java.util.Date; + +public class CalendarUtils { + public static Calendar getPlusDays(Date date, int amount) throws ParseException { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.DAY_OF_YEAR, amount); + return calendar; + } +} diff --git a/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/DateUtils.java b/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/DateUtils.java new file mode 100644 index 0000000000..f03f38b10d --- /dev/null +++ b/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/DateUtils.java @@ -0,0 +1,19 @@ +package com.baeldung.datetime; + +import java.text.SimpleDateFormat; +import java.text.ParseException; +import java.util.Date; +public class DateUtils { + + public static Date getNow() { + return new Date(); + } + + public static Date getDate(long millis) { + return new Date(millis); + } + + public static Date getDate(String dateAsString, String pattern) throws ParseException { + return new SimpleDateFormat(pattern).parse(dateAsString); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/UseSimpleDateFormat.java b/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/UseSimpleDateFormat.java new file mode 100644 index 0000000000..a9c9bac92e --- /dev/null +++ b/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/UseSimpleDateFormat.java @@ -0,0 +1,15 @@ +package com.baeldung.datetime; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.TimeZone; + +public class UseSimpleDateFormat { + + public String useFormat() { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z"); + sdf.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata")); + Date date = new Date(1725437542000L); + return sdf.format(date); + } +} diff --git a/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/sql/DateUtils.java b/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/sql/DateUtils.java new file mode 100644 index 0000000000..1b4e825df8 --- /dev/null +++ b/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/sql/DateUtils.java @@ -0,0 +1,21 @@ +package com.baeldung.datetime.sql; + +import java.sql.Date; +import java.text.ParseException; +import java.text.SimpleDateFormat; + +public class DateUtils { + + public static Date getNow() { + return new Date(System.currentTimeMillis()); + } + + public static Date getDate(String dateAsString) { + return Date.valueOf(dateAsString); + } + + public static Date getDate(String dateAsString, String pattern) throws ParseException { + java.util.Date customUtilDate = new SimpleDateFormat(pattern).parse(dateAsString); + return new Date(customUtilDate.getTime()); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/sql/TimeUtils.java b/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/sql/TimeUtils.java new file mode 100644 index 0000000000..3fa1ffdef8 --- /dev/null +++ b/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/sql/TimeUtils.java @@ -0,0 +1,21 @@ +package com.baeldung.datetime.sql; + +import java.sql.Time; +import java.text.ParseException; +import java.text.SimpleDateFormat; + +public class TimeUtils { + + public static Time getNow() { + return new Time(System.currentTimeMillis()); + } + + public static Time getTime(String timeAsString) { + return Time.valueOf(timeAsString); + } + + public static Time getTime(String dateAsString, String pattern) throws ParseException { + java.util.Date customUtilDate = new SimpleDateFormat(pattern).parse(dateAsString); + return new Time(customUtilDate.getTime()); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/sql/TimestampUtils.java b/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/sql/TimestampUtils.java new file mode 100644 index 0000000000..02a928daa7 --- /dev/null +++ b/core-java-modules/core-java-8-datetime/src/main/java/com/baeldung/datetime/sql/TimestampUtils.java @@ -0,0 +1,21 @@ +package com.baeldung.datetime.sql; + +import java.sql.Timestamp; +import java.text.ParseException; +import java.text.SimpleDateFormat; + +public class TimestampUtils { + + public static Timestamp getNow() { + return new Timestamp(System.currentTimeMillis()); + } + + public static Timestamp getTimestamp(String timestampAsString) { + return Timestamp.valueOf(timestampAsString); + } + + public static Timestamp getTimestamp(String dateAsString, String pattern) throws ParseException { + java.util.Date customUtilDate = new SimpleDateFormat(pattern).parse(dateAsString); + return new Timestamp(customUtilDate.getTime()); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/CalendarUtilsUnitTest.java b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/CalendarUtilsUnitTest.java new file mode 100644 index 0000000000..8c9ed695d7 --- /dev/null +++ b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/CalendarUtilsUnitTest.java @@ -0,0 +1,18 @@ +package com.baeldung.datetime; + +import org.junit.Test; + +import java.text.ParseException; +import java.util.Date; + +import static org.junit.Assert.assertEquals; + +public class CalendarUtilsUnitTest { + + @Test + public void givenDateAndDaysToAdd_thenCalendarIsCorrectlyReturned() throws ParseException { + Date initialDate = DateUtils.getDate("2020/01/01", "yyyy/MM/dd"); + Date expectedDate= DateUtils.getDate("2020/01/11", "yyyy/MM/dd"); + assertEquals(expectedDate, CalendarUtils.getPlusDays(initialDate, 10).getTime()); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/DateUtilsUnitTest.java b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/DateUtilsUnitTest.java new file mode 100644 index 0000000000..76a40c5d70 --- /dev/null +++ b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/DateUtilsUnitTest.java @@ -0,0 +1,15 @@ +package com.baeldung.datetime; +import org.junit.Test; + +import java.text.ParseException; +import java.util.Date; + +import static org.junit.Assert.assertEquals; +public class DateUtilsUnitTest { + + @Test + public void givenDateAndPattern_thenDateIsCorrectlyReturned() throws ParseException { + long milliseconds = new Date(2020 - 1900, 0, 1).getTime(); + assertEquals(DateUtils.getDate(milliseconds), DateUtils.getDate("2020/01/01", "yyyy/MM/dd")); + } +} diff --git a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseSimpleDateFormatTest.java b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseSimpleDateFormatTest.java new file mode 100644 index 0000000000..82ad9efe50 --- /dev/null +++ b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/UseSimpleDateFormatTest.java @@ -0,0 +1,13 @@ +package com.baeldung.datetime; + +import org.junit.Assert; +import org.junit.Test; + +public class UseSimpleDateFormatTest { + private UseSimpleDateFormat useSimpleDateFormat = new UseSimpleDateFormat(); + + @Test + public void givenValues_whenUsingFactoryOf_thenLocalTime() { + Assert.assertEquals("2024-09-04 13:42:22 +0530", useSimpleDateFormat.useFormat()); + } +} diff --git a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/sql/DateUtilsUnitTest.java b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/sql/DateUtilsUnitTest.java new file mode 100644 index 0000000000..9ccaa9a845 --- /dev/null +++ b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/sql/DateUtilsUnitTest.java @@ -0,0 +1,21 @@ +package com.baeldung.datetime.sql; + +import static org.junit.Assert.assertEquals; + +import java.text.ParseException; +import java.time.LocalDate; + +import org.junit.Test; + +public class DateUtilsUnitTest { + + @Test(expected = IllegalArgumentException.class) + public void givenDateAsString_whenPatternIsNotRespected_thenExceptionIsThrown() { + DateUtils.getDate("2020 01 01"); + } + + @Test + public void givenDateAndPattern_thenDateIsCorrectlyReturned() throws ParseException { + assertEquals(DateUtils.getDate("2020-01-01"), DateUtils.getDate("2020/01/01", "yyyy/MM/dd")); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/sql/TimeUtilsUnitTest.java b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/sql/TimeUtilsUnitTest.java new file mode 100644 index 0000000000..e13c53bfbb --- /dev/null +++ b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/sql/TimeUtilsUnitTest.java @@ -0,0 +1,22 @@ +package com.baeldung.datetime.sql; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +import com.baeldung.datetime.sql.TimeUtils; + +import java.text.ParseException; + +public class TimeUtilsUnitTest { + + @Test(expected = IllegalArgumentException.class) + public void givenTimeAsString_whenPatternIsNotRespected_thenExceptionIsThrown() { + TimeUtils.getTime("10 11 12"); + } + + @Test + public void givenTimeAndPattern_thenTimeIsCorrectlyReturned() throws ParseException { + assertEquals(TimeUtils.getTime("10:11:12"), TimeUtils.getTime("10 11 12", "hh mm ss")); + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/sql/TimestampUtilsUnitTest.java b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/sql/TimestampUtilsUnitTest.java new file mode 100644 index 0000000000..836d0d55e7 --- /dev/null +++ b/core-java-modules/core-java-8-datetime/src/test/java/com/baeldung/datetime/sql/TimestampUtilsUnitTest.java @@ -0,0 +1,20 @@ +package com.baeldung.datetime.sql; + +import org.junit.Test; + +import java.text.ParseException; + +import static org.junit.Assert.assertEquals; + +public class TimestampUtilsUnitTest { + + @Test(expected = IllegalArgumentException.class) + public void givenTimestampAsString_whenPatternIsNotRespected_thenExceptionIsThrown() { + TimestampUtils.getTimestamp("2020/01/01 10:11-12"); + } + + @Test + public void givenTimestampAndPattern_thenTimestampIsCorrectlyReturned() throws ParseException { + assertEquals(TimestampUtils.getTimestamp("2020-01-01 10:11:12"), TimestampUtils.getTimestamp("2020/01/01 10:11-12", "yyyy/MM/dd hh:mm-ss")); + } +} \ No newline at end of file diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index f51d0308f1..1c517d7a77 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -17,6 +17,7 @@ core-java core-java-8 + core-java-8-datetime core-java-9 core-java-11