{"id":1952,"date":"2024-06-21T20:16:24","date_gmt":"2024-06-21T20:16:24","guid":{"rendered":"https:\/\/www.w3computing.com\/articles\/?p=1952"},"modified":"2024-06-21T20:16:31","modified_gmt":"2024-06-21T20:16:31","slug":"how-to-use-javas-new-date-and-time-api","status":"publish","type":"post","link":"https:\/\/www.w3computing.com\/articles\/how-to-use-javas-new-date-and-time-api\/","title":{"rendered":"How to Use Java&#8217;s New Date and Time API"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">The new Date and Time API introduced in Java 8 provides a comprehensive model for date and time manipulation. This tutorial will guide you through the core components of this API, its usage, and best practices. This is intended for developers with a basic understanding of Java.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Introduction to Java Date and Time API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before Java 8, date and time handling in Java was primarily done using <code>java.util.Date<\/code> and <code>java.util.Calendar<\/code>. These classes had several issues, such as being mutable and not thread-safe. To address these issues, Java 8 introduced a new Date and Time API, which is part of the <code>java.time<\/code> package.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The new API is inspired by Joda-Time and follows the ISO calendar system. It provides a more intuitive and flexible approach to date and time manipulation, ensuring immutability and thread safety.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Key Classes in java.time Package<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>java.time<\/code> package includes several classes for different date and time concepts:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>LocalDate<\/strong>: Represents a date (year, month, day) without time and timezone.<\/li>\n\n\n\n<li><strong>LocalTime<\/strong>: Represents a time (hour, minute, second, nanosecond) without date and timezone.<\/li>\n\n\n\n<li><strong>LocalDateTime<\/strong>: Combines date and time without timezone.<\/li>\n\n\n\n<li><strong>ZonedDateTime<\/strong>: Combines date, time, and timezone.<\/li>\n\n\n\n<li><strong>Period<\/strong>: Represents a period in years, months, and days.<\/li>\n\n\n\n<li><strong>Duration<\/strong>: Represents a duration in seconds and nanoseconds.<\/li>\n\n\n\n<li><strong>Instant<\/strong>: Represents a point in time (timestamp) with nanosecond precision.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Let&#8217;s explore each of these classes in detail.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Working with LocalDate<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>LocalDate<\/code> is used to represent a date without time and timezone. It&#8217;s immutable and thread-safe. Here are some common operations:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Creating LocalDate Instances<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.LocalDate;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">LocalDateExample<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        <span class=\"hljs-comment\">\/\/ Current date<\/span>\n        LocalDate currentDate = LocalDate.now();\n        System.out.println(<span class=\"hljs-string\">\"Current Date: \"<\/span> + currentDate);\n\n        <span class=\"hljs-comment\">\/\/ Specific date<\/span>\n        LocalDate specificDate = LocalDate.of(<span class=\"hljs-number\">2020<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">1<\/span>);\n        System.out.println(<span class=\"hljs-string\">\"Specific Date: \"<\/span> + specificDate);\n\n        <span class=\"hljs-comment\">\/\/ Parsing date from string<\/span>\n        LocalDate parsedDate = LocalDate.parse(<span class=\"hljs-string\">\"2020-01-01\"<\/span>);\n        System.out.println(<span class=\"hljs-string\">\"Parsed Date: \"<\/span> + parsedDate);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Extracting Date Information<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.LocalDate;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ExtractDateInfo<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        LocalDate date = LocalDate.now();\n        <span class=\"hljs-keyword\">int<\/span> year = date.getYear();\n        <span class=\"hljs-keyword\">int<\/span> month = date.getMonthValue();\n        <span class=\"hljs-keyword\">int<\/span> day = date.getDayOfMonth();\n        System.out.println(<span class=\"hljs-string\">\"Year: \"<\/span> + year + <span class=\"hljs-string\">\", Month: \"<\/span> + month + <span class=\"hljs-string\">\", Day: \"<\/span> + day);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Modifying Dates<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.LocalDate;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ModifyDate<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        LocalDate date = LocalDate.now();\n        LocalDate nextWeek = date.plusWeeks(<span class=\"hljs-number\">1<\/span>);\n        LocalDate previousMonth = date.minusMonths(<span class=\"hljs-number\">1<\/span>);\n        LocalDate nextYear = date.withYear(<span class=\"hljs-number\">2021<\/span>);\n        System.out.println(<span class=\"hljs-string\">\"Next Week: \"<\/span> + nextWeek);\n        System.out.println(<span class=\"hljs-string\">\"Previous Month: \"<\/span> + previousMonth);\n        System.out.println(<span class=\"hljs-string\">\"Next Year: \"<\/span> + nextYear);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">4. Working with LocalTime<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>LocalTime<\/code> represents a time without date and timezone.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Creating LocalTime Instances<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.LocalTime;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">LocalTimeExample<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        <span class=\"hljs-comment\">\/\/ Current time<\/span>\n        LocalTime currentTime = LocalTime.now();\n        System.out.println(<span class=\"hljs-string\">\"Current Time: \"<\/span> + currentTime);\n\n        <span class=\"hljs-comment\">\/\/ Specific time<\/span>\n        LocalTime specificTime = LocalTime.of(<span class=\"hljs-number\">10<\/span>, <span class=\"hljs-number\">30<\/span>);\n        System.out.println(<span class=\"hljs-string\">\"Specific Time: \"<\/span> + specificTime);\n\n        <span class=\"hljs-comment\">\/\/ Parsing time from string<\/span>\n        LocalTime parsedTime = LocalTime.parse(<span class=\"hljs-string\">\"10:30:00\"<\/span>);\n        System.out.println(<span class=\"hljs-string\">\"Parsed Time: \"<\/span> + parsedTime);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Extracting Time Information<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.LocalTime;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ExtractTimeInfo<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        LocalTime time = LocalTime.now();\n        <span class=\"hljs-keyword\">int<\/span> hour = time.getHour();\n        <span class=\"hljs-keyword\">int<\/span> minute = time.getMinute();\n        <span class=\"hljs-keyword\">int<\/span> second = time.getSecond();\n        System.out.println(<span class=\"hljs-string\">\"Hour: \"<\/span> + hour + <span class=\"hljs-string\">\", Minute: \"<\/span> + minute + <span class=\"hljs-string\">\", Second: \"<\/span> + second);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Modifying Times<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.LocalTime;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ModifyTime<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        LocalTime time = LocalTime.now();\n        LocalTime nextHour = time.plusHours(<span class=\"hljs-number\">1<\/span>);\n        LocalTime previousMinute = time.minusMinutes(<span class=\"hljs-number\">1<\/span>);\n        LocalTime newTime = time.withHour(<span class=\"hljs-number\">10<\/span>);\n        System.out.println(<span class=\"hljs-string\">\"Next Hour: \"<\/span> + nextHour);\n        System.out.println(<span class=\"hljs-string\">\"Previous Minute: \"<\/span> + previousMinute);\n        System.out.println(<span class=\"hljs-string\">\"New Time: \"<\/span> + newTime);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">5. Working with LocalDateTime<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>LocalDateTime<\/code> combines date and time without timezone.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Creating LocalDateTime Instances<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.LocalDateTime;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">LocalDateTimeExample<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        <span class=\"hljs-comment\">\/\/ Current date and time<\/span>\n        LocalDateTime currentDateTime = LocalDateTime.now();\n        System.out.println(<span class=\"hljs-string\">\"Current DateTime: \"<\/span> + currentDateTime);\n\n        <span class=\"hljs-comment\">\/\/ Specific date and time<\/span>\n        LocalDateTime specificDateTime = LocalDateTime.of(<span class=\"hljs-number\">2020<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">10<\/span>, <span class=\"hljs-number\">30<\/span>);\n        System.out.println(<span class=\"hljs-string\">\"Specific DateTime: \"<\/span> + specificDateTime);\n\n        <span class=\"hljs-comment\">\/\/ Parsing date and time from string<\/span>\n        LocalDateTime parsedDateTime = LocalDateTime.parse(<span class=\"hljs-string\">\"2020-01-01T10:30:00\"<\/span>);\n        System.out.println(<span class=\"hljs-string\">\"Parsed DateTime: \"<\/span> + parsedDateTime);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Extracting Date and Time Information<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.LocalDateTime;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ExtractDateTimeInfo<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        LocalDateTime dateTime = LocalDateTime.now();\n        <span class=\"hljs-keyword\">int<\/span> year = dateTime.getYear();\n        <span class=\"hljs-keyword\">int<\/span> month = dateTime.getMonthValue();\n        <span class=\"hljs-keyword\">int<\/span> day = dateTime.getDayOfMonth();\n        <span class=\"hljs-keyword\">int<\/span> hour = dateTime.getHour();\n        <span class=\"hljs-keyword\">int<\/span> minute = dateTime.getMinute();\n        <span class=\"hljs-keyword\">int<\/span> second = dateTime.getSecond();\n        System.out.println(<span class=\"hljs-string\">\"Year: \"<\/span> + year + <span class=\"hljs-string\">\", Month: \"<\/span> + month + <span class=\"hljs-string\">\", Day: \"<\/span> + day);\n        System.out.println(<span class=\"hljs-string\">\"Hour: \"<\/span> + hour + <span class=\"hljs-string\">\", Minute: \"<\/span> + minute + <span class=\"hljs-string\">\", Second: \"<\/span> + second);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Modifying Date and Time<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.LocalDateTime;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ModifyDateTime<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        LocalDateTime dateTime = LocalDateTime.now();\n        LocalDateTime nextDay = dateTime.plusDays(<span class=\"hljs-number\">1<\/span>);\n        LocalDateTime previousHour = dateTime.minusHours(<span class=\"hljs-number\">1<\/span>);\n        LocalDateTime newDateTime = dateTime.withYear(<span class=\"hljs-number\">2021<\/span>);\n        System.out.println(<span class=\"hljs-string\">\"Next Day: \"<\/span> + nextDay);\n        System.out.println(<span class=\"hljs-string\">\"Previous Hour: \"<\/span> + previousHour);\n        System.out.println(<span class=\"hljs-string\">\"New DateTime: \"<\/span> + newDateTime);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">6. Using ZonedDateTime<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>ZonedDateTime<\/code> combines date, time, and timezone.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Creating ZonedDateTime Instances<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.ZonedDateTime;\n<span class=\"hljs-keyword\">import<\/span> java.time.ZoneId;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ZonedDateTimeExample<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        <span class=\"hljs-comment\">\/\/ Current date and time with timezone<\/span>\n        ZonedDateTime currentZonedDateTime = ZonedDateTime.now();\n        System.out.println(<span class=\"hljs-string\">\"Current ZonedDateTime: \"<\/span> + currentZonedDateTime);\n\n        <span class=\"hljs-comment\">\/\/ Specific date, time, and timezone<\/span>\n        ZonedDateTime specificZonedDateTime = ZonedDateTime.of(<span class=\"hljs-number\">2020<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">10<\/span>, <span class=\"hljs-number\">30<\/span>, <span class=\"hljs-number\">0<\/span>, <span class=\"hljs-number\">0<\/span>, ZoneId.of(<span class=\"hljs-string\">\"Asia\/Karachi\"<\/span>));\n        System.out.println(<span class=\"hljs-string\">\"Specific ZonedDateTime: \"<\/span> + specificZonedDateTime);\n\n        <span class=\"hljs-comment\">\/\/ Parsing date, time, and timezone from string<\/span>\n        ZonedDateTime parsedZonedDateTime = ZonedDateTime.parse(<span class=\"hljs-string\">\"2020-01-01T10:30:00+05:00&#91;Asia\/Karachi]\"<\/span>);\n        System.out.println(<span class=\"hljs-string\">\"Parsed ZonedDateTime: \"<\/span> + parsedZonedDateTime);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Extracting ZonedDateTime Information<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.ZonedDateTime;\n<span class=\"hljs-keyword\">import<\/span> java.time.ZoneId;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ExtractZonedDateTimeInfo<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of(<span class=\"hljs-string\">\"Asia\/Karachi\"<\/span>));\n        <span class=\"hljs-keyword\">int<\/span> year = zonedDateTime.getYear();\n        <span class=\"hljs-keyword\">int<\/span> month = zonedDateTime.getMonthValue();\n        <span class=\"hljs-keyword\">int<\/span> day = zonedDateTime.getDayOfMonth();\n        <span class=\"hljs-keyword\">int<\/span> hour = zonedDateTime.<span class=\"hljs-function\">get\n\n<span class=\"hljs-title\">Hour<\/span><span class=\"hljs-params\">()<\/span><\/span>;\n        <span class=\"hljs-keyword\">int<\/span> minute = zonedDateTime.getMinute();\n        <span class=\"hljs-keyword\">int<\/span> second = zonedDateTime.getSecond();\n        ZoneId zone = zonedDateTime.getZone();\n        System.out.println(<span class=\"hljs-string\">\"Year: \"<\/span> + year + <span class=\"hljs-string\">\", Month: \"<\/span> + month + <span class=\"hljs-string\">\", Day: \"<\/span> + day);\n        System.out.println(<span class=\"hljs-string\">\"Hour: \"<\/span> + hour + <span class=\"hljs-string\">\", Minute: \"<\/span> + minute + <span class=\"hljs-string\">\", Second: \"<\/span> + second);\n        System.out.println(<span class=\"hljs-string\">\"Zone: \"<\/span> + zone);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Modifying ZonedDateTime<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.ZonedDateTime;\n<span class=\"hljs-keyword\">import<\/span> java.time.ZoneId;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">ModifyZonedDateTime<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.of(<span class=\"hljs-string\">\"Asia\/Karachi\"<\/span>));\n        ZonedDateTime nextDay = zonedDateTime.plusDays(<span class=\"hljs-number\">1<\/span>);\n        ZonedDateTime previousHour = zonedDateTime.minusHours(<span class=\"hljs-number\">1<\/span>);\n        ZonedDateTime newZonedDateTime = zonedDateTime.withZoneSameInstant(ZoneId.of(<span class=\"hljs-string\">\"America\/New_York\"<\/span>));\n        System.out.println(<span class=\"hljs-string\">\"Next Day: \"<\/span> + nextDay);\n        System.out.println(<span class=\"hljs-string\">\"Previous Hour: \"<\/span> + previousHour);\n        System.out.println(<span class=\"hljs-string\">\"New ZonedDateTime: \"<\/span> + newZonedDateTime);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">7. Period and Duration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Period<\/code> is used to represent a date-based amount of time in years, months, and days. <code>Duration<\/code> is used to represent a time-based amount of time in seconds and nanoseconds.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Creating Period Instances<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.LocalDate;\n<span class=\"hljs-keyword\">import<\/span> java.time.Period;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">PeriodExample<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        Period period = Period.of(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>); <span class=\"hljs-comment\">\/\/ 1 year, 2 months, 3 days<\/span>\n        System.out.println(<span class=\"hljs-string\">\"Period: \"<\/span> + period);\n\n        LocalDate startDate = LocalDate.of(<span class=\"hljs-number\">2020<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">1<\/span>);\n        LocalDate endDate = LocalDate.of(<span class=\"hljs-number\">2021<\/span>, <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">1<\/span>);\n        Period between = Period.between(startDate, endDate);\n        System.out.println(<span class=\"hljs-string\">\"Period Between: \"<\/span> + between);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Creating Duration Instances<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.Duration;\n<span class=\"hljs-keyword\">import<\/span> java.time.LocalTime;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">DurationExample<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        Duration duration = Duration.ofHours(<span class=\"hljs-number\">5<\/span>); <span class=\"hljs-comment\">\/\/ 5 hours<\/span>\n        System.out.println(<span class=\"hljs-string\">\"Duration: \"<\/span> + duration);\n\n        LocalTime startTime = LocalTime.of(<span class=\"hljs-number\">10<\/span>, <span class=\"hljs-number\">0<\/span>);\n        LocalTime endTime = LocalTime.of(<span class=\"hljs-number\">15<\/span>, <span class=\"hljs-number\">0<\/span>);\n        Duration between = Duration.between(startTime, endTime);\n        System.out.println(<span class=\"hljs-string\">\"Duration Between: \"<\/span> + between);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">8. Formatting and Parsing Dates<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>java.time.format.DateTimeFormatter<\/code> class is used for formatting and parsing dates.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Formatting Dates<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.LocalDate;\n<span class=\"hljs-keyword\">import<\/span> java.time.format.DateTimeFormatter;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">DateFormatting<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        LocalDate date = LocalDate.now();\n        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(<span class=\"hljs-string\">\"dd\/MM\/yyyy\"<\/span>);\n        String formattedDate = date.format(formatter);\n        System.out.println(<span class=\"hljs-string\">\"Formatted Date: \"<\/span> + formattedDate);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Parsing Dates<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-16\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.LocalDate;\n<span class=\"hljs-keyword\">import<\/span> java.time.format.DateTimeFormatter;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">DateParsing<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        String dateString = <span class=\"hljs-string\">\"01\/01\/2020\"<\/span>;\n        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(<span class=\"hljs-string\">\"dd\/MM\/yyyy\"<\/span>);\n        LocalDate date = LocalDate.parse(dateString, formatter);\n        System.out.println(<span class=\"hljs-string\">\"Parsed Date: \"<\/span> + date);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-16\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">9. Working with TemporalAdjusters<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">TemporalAdjusters provide a way to perform complex date manipulations.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Using Predefined Adjusters<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-17\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.LocalDate;\n<span class=\"hljs-keyword\">import<\/span> java.time.temporal.TemporalAdjusters;\n<span class=\"hljs-keyword\">import<\/span> java.time.DayOfWeek;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">TemporalAdjustersExample<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        LocalDate date = LocalDate.now();\n        LocalDate nextOrSameMonday = date.with(TemporalAdjusters.nextOrSame(DayOfWeek.MONDAY));\n        LocalDate firstDayOfMonth = date.with(TemporalAdjusters.firstDayOfMonth());\n        System.out.println(<span class=\"hljs-string\">\"Next or Same Monday: \"<\/span> + nextOrSameMonday);\n        System.out.println(<span class=\"hljs-string\">\"First Day of Month: \"<\/span> + firstDayOfMonth);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-17\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Creating Custom Adjusters<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-18\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.LocalDate;\n<span class=\"hljs-keyword\">import<\/span> java.time.temporal.TemporalAdjuster;\n<span class=\"hljs-keyword\">import<\/span> java.time.temporal.Temporal;\n<span class=\"hljs-keyword\">import<\/span> java.time.temporal.ChronoUnit;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">CustomAdjusterExample<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        LocalDate date = LocalDate.now();\n        TemporalAdjuster nextWorkingDay = temporal -&gt; {\n            LocalDate localDate = LocalDate.from(temporal);\n            <span class=\"hljs-keyword\">do<\/span> {\n                localDate = localDate.plusDays(<span class=\"hljs-number\">1<\/span>);\n            } <span class=\"hljs-keyword\">while<\/span> (localDate.getDayOfWeek() == DayOfWeek.SATURDAY || localDate.getDayOfWeek() == DayOfWeek.SUNDAY);\n            <span class=\"hljs-keyword\">return<\/span> temporal.with(localDate);\n        };\n        LocalDate nextWorkDay = date.with(nextWorkingDay);\n        System.out.println(<span class=\"hljs-string\">\"Next Working Day: \"<\/span> + nextWorkDay);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-18\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">10. Handling Legacy Date and Time APIs<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>java.time<\/code> package provides interoperability with legacy date and time classes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Converting java.util.Date to java.time<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-19\" data-shcb-language-name=\"Java\" data-shcb-language-slug=\"java\"><span><code class=\"hljs language-java\"><span class=\"hljs-keyword\">import<\/span> java.time.Instant;\n<span class=\"hljs-keyword\">import<\/span> java.time.LocalDateTime;\n<span class=\"hljs-keyword\">import<\/span> java.time.ZoneId;\n<span class=\"hljs-keyword\">import<\/span> java.util.Date;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">LegacyDateConversion<\/span> <\/span>{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">(String&#91;] args)<\/span> <\/span>{\n        Date date = <span class=\"hljs-keyword\">new<\/span> Date();\n        Instant instant = date.toInstant();\n        LocalDateTime dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());\n        System.out.println(<span class=\"hljs-string\">\"Converted DateTime: \"<\/span> + dateTime);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-19\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">Java<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">java<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\">Converting java.time to java.util.Date<\/h3>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-20\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\"><span class=\"hljs-keyword\">import<\/span> java.time.LocalDateTime;\n<span class=\"hljs-keyword\">import<\/span> java.time.ZoneId;\n<span class=\"hljs-keyword\">import<\/span> java.util.Date;\n\npublic <span class=\"hljs-class\"><span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">DateTimeToDateConversion<\/span> <\/span>{\n    public <span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> main(<span class=\"hljs-built_in\">String<\/span>&#91;] args) {\n        LocalDateTime dateTime = LocalDateTime.now();\n        <span class=\"hljs-built_in\">Date<\/span> date = <span class=\"hljs-built_in\">Date<\/span>.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());\n        System.out.println(<span class=\"hljs-string\">\"Converted Date: \"<\/span> + date);\n    }\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-20\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">11. Best Practices<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Use the new API<\/strong>: Always prefer the new Date and Time API over the legacy ones for better readability and functionality.<\/li>\n\n\n\n<li><strong>Immutability<\/strong>: Take advantage of the immutability of the new API to avoid bugs related to mutable date objects.<\/li>\n\n\n\n<li><strong>Timezones<\/strong>: Be explicit about timezones when dealing with date and time, especially in a global application.<\/li>\n\n\n\n<li><strong>Use Period and Duration<\/strong>: For representing periods and durations, use <code>Period<\/code> and <code>Duration<\/code> classes instead of calculating manually.<\/li>\n\n\n\n<li><strong>Formatting and Parsing<\/strong>: Use <code>DateTimeFormatter<\/code> for formatting and parsing to ensure consistency and avoid errors.<\/li>\n\n\n\n<li><strong>TemporalAdjusters<\/strong>: Utilize <code>TemporalAdjusters<\/code> for complex date manipulations instead of writing custom logic.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">12. Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The new Date and Time API in Java 8 is a powerful and flexible framework for handling date and time operations. By understanding and utilizing the key classes and their methods, you can write more readable, maintainable, and bug-free code. This tutorial has covered the fundamental aspects of the new API, providing a solid foundation for further exploration and application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For more advanced topics and specific use cases, refer to the official <a href=\"https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/time\/package-summary.html\">Java documentation<\/a> and explore additional libraries and community resources.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The new Date and Time API introduced in Java 8 provides a comprehensive model for date and time manipulation. This tutorial will guide you through the core components of this API, its usage, and best practices. This is intended for developers with a basic understanding of Java. 1. Introduction to Java Date and Time API [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[5,4],"tags":[],"class_list":["post-1952","post","type-post","status-publish","format-standard","category-java","category-programming-languages","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Use Java&#039;s New Date and Time API<\/title>\n<meta name=\"description\" content=\"The new Date and Time API introduced in Java 8 provides a comprehensive model for date and time manipulation.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.w3computing.com\/articles\/how-to-use-javas-new-date-and-time-api\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Use Java&#039;s New Date and Time API\" \/>\n<meta property=\"og:description\" content=\"The new Date and Time API introduced in Java 8 provides a comprehensive model for date and time manipulation.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.w3computing.com\/articles\/how-to-use-javas-new-date-and-time-api\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-06-21T20:16:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-21T20:16:31+00:00\" \/>\n<meta name=\"author\" content=\"w3compadmin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"w3compadmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"TechArticle\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/how-to-use-javas-new-date-and-time-api\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/how-to-use-javas-new-date-and-time-api\\\/\"},\"author\":{\"name\":\"w3compadmin\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/#\\\/schema\\\/person\\\/a550b3e20d78bb4f79b7c6b7b53f0561\"},\"headline\":\"How to Use Java&#8217;s New Date and Time API\",\"datePublished\":\"2024-06-21T20:16:24+00:00\",\"dateModified\":\"2024-06-21T20:16:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/how-to-use-javas-new-date-and-time-api\\\/\"},\"wordCount\":591,\"articleSection\":[\"Java\",\"Programming Languages\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/how-to-use-javas-new-date-and-time-api\\\/\",\"url\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/how-to-use-javas-new-date-and-time-api\\\/\",\"name\":\"How to Use Java's New Date and Time API\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/#website\"},\"datePublished\":\"2024-06-21T20:16:24+00:00\",\"dateModified\":\"2024-06-21T20:16:31+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/#\\\/schema\\\/person\\\/a550b3e20d78bb4f79b7c6b7b53f0561\"},\"description\":\"The new Date and Time API introduced in Java 8 provides a comprehensive model for date and time manipulation.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/how-to-use-javas-new-date-and-time-api\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/how-to-use-javas-new-date-and-time-api\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/how-to-use-javas-new-date-and-time-api\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Articles Home\",\"item\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programming Languages\",\"item\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/programming-languages\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to Use Java&#8217;s New Date and Time API\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/#website\",\"url\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/\",\"name\":\"Developer Articles Hub\",\"description\":\"\",\"alternateName\":\"Developer Articles\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/#\\\/schema\\\/person\\\/a550b3e20d78bb4f79b7c6b7b53f0561\",\"name\":\"w3compadmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/wp-content\\\/litespeed\\\/avatar\\\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266\",\"url\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/wp-content\\\/litespeed\\\/avatar\\\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266\",\"contentUrl\":\"https:\\\/\\\/www.w3computing.com\\\/articles\\\/wp-content\\\/litespeed\\\/avatar\\\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266\",\"caption\":\"w3compadmin\"},\"sameAs\":[\"http:\\\/\\\/w3computing.com\\\/articles\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Use Java's New Date and Time API","description":"The new Date and Time API introduced in Java 8 provides a comprehensive model for date and time manipulation.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.w3computing.com\/articles\/how-to-use-javas-new-date-and-time-api\/","og_locale":"en_US","og_type":"article","og_title":"How to Use Java's New Date and Time API","og_description":"The new Date and Time API introduced in Java 8 provides a comprehensive model for date and time manipulation.","og_url":"https:\/\/www.w3computing.com\/articles\/how-to-use-javas-new-date-and-time-api\/","article_published_time":"2024-06-21T20:16:24+00:00","article_modified_time":"2024-06-21T20:16:31+00:00","author":"w3compadmin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"w3compadmin","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"TechArticle","@id":"https:\/\/www.w3computing.com\/articles\/how-to-use-javas-new-date-and-time-api\/#article","isPartOf":{"@id":"https:\/\/www.w3computing.com\/articles\/how-to-use-javas-new-date-and-time-api\/"},"author":{"name":"w3compadmin","@id":"https:\/\/www.w3computing.com\/articles\/#\/schema\/person\/a550b3e20d78bb4f79b7c6b7b53f0561"},"headline":"How to Use Java&#8217;s New Date and Time API","datePublished":"2024-06-21T20:16:24+00:00","dateModified":"2024-06-21T20:16:31+00:00","mainEntityOfPage":{"@id":"https:\/\/www.w3computing.com\/articles\/how-to-use-javas-new-date-and-time-api\/"},"wordCount":591,"articleSection":["Java","Programming Languages"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.w3computing.com\/articles\/how-to-use-javas-new-date-and-time-api\/","url":"https:\/\/www.w3computing.com\/articles\/how-to-use-javas-new-date-and-time-api\/","name":"How to Use Java's New Date and Time API","isPartOf":{"@id":"https:\/\/www.w3computing.com\/articles\/#website"},"datePublished":"2024-06-21T20:16:24+00:00","dateModified":"2024-06-21T20:16:31+00:00","author":{"@id":"https:\/\/www.w3computing.com\/articles\/#\/schema\/person\/a550b3e20d78bb4f79b7c6b7b53f0561"},"description":"The new Date and Time API introduced in Java 8 provides a comprehensive model for date and time manipulation.","breadcrumb":{"@id":"https:\/\/www.w3computing.com\/articles\/how-to-use-javas-new-date-and-time-api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.w3computing.com\/articles\/how-to-use-javas-new-date-and-time-api\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.w3computing.com\/articles\/how-to-use-javas-new-date-and-time-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Articles Home","item":"https:\/\/www.w3computing.com\/articles\/"},{"@type":"ListItem","position":2,"name":"Programming Languages","item":"https:\/\/www.w3computing.com\/articles\/programming-languages\/"},{"@type":"ListItem","position":3,"name":"How to Use Java&#8217;s New Date and Time API"}]},{"@type":"WebSite","@id":"https:\/\/www.w3computing.com\/articles\/#website","url":"https:\/\/www.w3computing.com\/articles\/","name":"Developer Articles Hub","description":"","alternateName":"Developer Articles","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.w3computing.com\/articles\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.w3computing.com\/articles\/#\/schema\/person\/a550b3e20d78bb4f79b7c6b7b53f0561","name":"w3compadmin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.w3computing.com\/articles\/wp-content\/litespeed\/avatar\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266","url":"https:\/\/www.w3computing.com\/articles\/wp-content\/litespeed\/avatar\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266","contentUrl":"https:\/\/www.w3computing.com\/articles\/wp-content\/litespeed\/avatar\/bd481d404e42caa2763662a3bfe825f8.jpg?ver=1780141266","caption":"w3compadmin"},"sameAs":["http:\/\/w3computing.com\/articles"]}]}},"featured_image_src":null,"featured_image_src_square":null,"author_info":{"display_name":"w3compadmin","author_link":"https:\/\/www.w3computing.com\/articles\/author\/w3compadmin\/"},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/posts\/1952","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/comments?post=1952"}],"version-history":[{"count":2,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/posts\/1952\/revisions"}],"predecessor-version":[{"id":1954,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/posts\/1952\/revisions\/1954"}],"wp:attachment":[{"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/media?parent=1952"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/categories?post=1952"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.w3computing.com\/articles\/wp-json\/wp\/v2\/tags?post=1952"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}