Date and Time API

Date and Time API

Date and Time API also called Joda-Time API. Until Java 1.7 version the classes present in Java.util package to handle Date and Time (like Date, Calendar, TimeZoneetc) are not up to the mark with respect to convenience and performance. To overcome this problem in the 1.8version oracle people introduced Joda-Time API. This API developed by joda.org and available in Java in the form of Java.time package.

E.g

package com.ashok.java8.datetime;

import java.time.LocalDate;
import java.time.LocalTime;

/**
 * 
 * @author ashok.mariyala
 *
 */
public class DateTimeTest {
   public static void main(String[] args) {
      LocalDate date = LocalDate.now();
      System.out.println(date);
      LocalTime time = LocalTime.now();
      System.out.println(time);
   }
}

Output

2018-11-10
21:19:28.388

Once we get LocalDate object we can call the following methods on that object to retrieve Day,month and year values separately.

package com.ashok.java8.datetime;

import java.time.LocalDate;
/**
 * 
 * @author ashok.mariyala
 *
 */
public class TestDateTime {
   public static void main(String[] args) {
      LocalDate date = LocalDate.now();
      System.out.println(date);
      int dd = date.getDayOfMonth();
      int mm = date.getMonthValue();
      int yy = date.getYear();
      
      System.out.println(dd+"-"+mm+"-"+yy);
   }
}

Output

2018-11-10
10-11-2018

If we want to represent both Date and Time then we should go for LocalDateTime object.

package com.ashok.java8.datetime;

import java.time.LocalDateTime;

/**
 * 
 * @author ashok.mariyala
 *
 */
public class Test {
   public static void main(String[] args) {
      LocalDateTime dt = LocalDateTime.now(); 
      System.out.println(dt); // 2018-11-10T21:26:27.387
   }
}

We can represent a particular Date and Time by using LocalDateTime object as follows.

package com.ashok.java8.datetime;

import java.time.LocalDateTime;
import java.time.Month;

/**
 * 
 * @author ashok.mariyala
 *
 */
public class Test {
   public static void main(String[] args) {
      LocalDateTime dt1 = LocalDateTime.of(2016, Month.NOVEMBER, 28, 12, 45);
      System.out.println(dt1);

      LocalDateTime dt2 = LocalDateTime.of(2018, 04, 28, 12, 45);
      System.out.println(dt2);
      System.out.println("After six months:" + dt2.plusMonths(6));
      System.out.println("Before six months:" + dt2.minusMonths(6));
   }
}

Output

2016-11-28T12:45
2018-11-28T12:45
After six months : 2019-05-28T12:45
Before six months : 2018-05-28T12:45
To Represent Zone

ZoneId object can be used to represent Zone. We can create ZoneId for a particular zone as follows

package com.ashok.java8.datetime;

import java.time.ZoneId;
import java.time.ZonedDateTime;

/**
 * 
 * @author ashok.mariyala
 *
 */
public class ZoneTest {
   public static void main(String[] args) {
      ZoneId zone = ZoneId.systemDefault();
      System.out.println(zone);
      
      ZoneId la = ZoneId.of("America/Los_Angeles");
      ZonedDateTime zt = ZonedDateTime.now(la);
      System.out.println(zt);
   }
}

Output

Asia/Calcutta
2018-11-10T08:09:51.768-08:00[America/Los_Angeles]
Period Object

Period object can be used to represent quantity of time.

package com.ashok.java8.datetime;

import java.time.LocalDate;
import java.time.Period;

/**
 * 
 * @author ashok.mariyala
 *
 */
public class PeriodTest {
   public static void main(String[] args) {
      LocalDate today = LocalDate.now();
      LocalDate birthday = LocalDate.of(1991, 06, 15);
      Period p = Period.between(birthday, today);
      System.out.printf("Age is %d year %d months %d days", p.getYears(), p.getMonths(), p.getDays());
   }
}

Output

Age is 27 year 4 months 26 days
isLeap()

isLeap() function is used to check given year is leap year or not.

package com.ashok.java8.datetime;

import java.time.Year;
import java.util.Scanner;

/**
 * 
 * @author ashok.mariyala
 *
 */
public class LeapYearTest {
   public static void main(String[] args) {
      try(Scanner scan = new Scanner(System.in)) {
         System.out.print("Enter Year : ");
         int n = scan.nextInt();
         Year y = Year.of(n);
         
         if(y.isLeap())
            System.out.printf("%d is Leap year",n); 
         else 
            System.out.printf("%d is not Leap year",n);
      }
   }
}

Output

Enter Year : 2020
2020 is Leap year

That’s it guys. This is all about Java 8 New Features. Let me know your comments and suggestions about this tutorial. Thank you.

Date and Time API


Scroll to top