Date and Time API: (Joda-Time API)

  • Until Java 1.7version 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.
# program for to display System Date and time.
1) import java.time.*; 
2) public class DateTime { 
3) public static void main(String[] args) { 
4) LocalDate date = LocalDate.now(); 
5) System.out.println(date); 
6) LocalTime time=LocalTime.now(); 
7) System.out.println(time); 
8) } 
9) }
O/p:
2015-11-23
12:39:26:587
Once we get LocalDate object we can call the following methods on that object to retrieve Day,month and year values separately.
Ex: 
1) import java.time.*; 
2) class Test { 
3) public static void main(String[] args) { 
4) LocalDate date = LocalDate.now(); 
5) System.out.println(date); 
6) int dd = date.getDayOfMonth(); 
7) int mm = date.getMonthValue(); 
8) int yy = date.getYear(); 
9) System.out.println(dd+"..."+mm+"..."+yy); 
10) System.out.printf("\n%d-%d-%d",dd,mm,yy); 
11) } 
12) }
Once we get LocalTime object we can call the following methods on that object.
Ex: 
1) import java.time.*; 
2) class Test { 
3) public static void main(String[] args) { 
4) LocalTime time = LocalTime.now(); 
5) int h = time.getHour(); 
6) int m = time.getMinute(); 
7) int s = time.getSecond(); 
8) int n = time.getNano(); 
9) System.out.printf("\n%d:%d:%d:%d",h,m,s,n); 
10) } 
11) }
If we want to represent both Date and Time then we should go for LocalDateTime object.
LocalDateTime dt = LocalDateTime.now(); 
System.out.println(dt);
O/p: 2015-11-23T12:57:24.531
We can represent a particular Date and Time by using LocalDateTime object as follows.
Ex:
LocalDateTime dt1 = LocalDateTime.of(1995,Month.APRIL,28,12,45);
sop(dt1);
Ex:
LocalDateTime dt1=LocalDateTime.of(1995,04,28,12,45);
Sop(dt1);
Sop("After six months:"+dt.plusMonths(6));
Sop("Before six months:"+dt.minusMonths(6));
To Represent Zone: ZoneId object can be used to represent Zone.
Ex: 
1) import java.time.*; 
2) class ProgramOne { 
3) public static void main(String[] args) { 
4) ZoneId zone = ZoneId.systemDefault(); 
5) System.out.println(zone); 
6) } 
7) }
We can create ZoneId for a particular zone as follows
Ex:
ZoneId la = ZoneId.of("America/Los_Angeles");
ZonedDateTime zt = ZonedDateTime.now(la);
System.out.println(zt);
Period Object: Period object can be used to represent quantity of time
Ex:
LocalDate today = LocalDate.now();
LocalDate birthday = LocalDate.of(1989,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());
# write a program to check the given year is leap year or not
1) import java.time.*; 
2) public class Leapyear { 
3) int n = Integer.parseInt(args[0]); 
4) Year y = Year.of(n); 
5) if(y.isLeap()) 
6) System.out.printf("%d is Leap year",n); 
7) else 
8) System.out.printf("%d is not Leap year",n); 
9) }