user1097772
user1097772

Reputation: 3529

How to get properly current date and time in Joda-Time?

How to get properly actual date and time in Joda Time? By properly I mean time in my country. I read official pages and some tutorials - there are many things about Locales and timezones but I found it quite confusing. I did't found any example how to simply get it.

I need it for two things:

  1. To get current for post in disscusion,
  2. To get current time which I will "compare" with date of birth and compute the age.

How can I set the current time when I have UTC+1 (Prague - Czech Republic)?

Upvotes: 37

Views: 89861

Answers (2)

Smit
Smit

Reputation: 4715

Here is pseudo Code for Joda Time which could be useful to you.

import org.joda.time.*;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public class JodaTimeExample {

    public static void main(String[] sm) {
        DateTimeFormatter dateFormat = DateTimeFormat
                .forPattern("G,C,Y,x,w,e,E,Y,D,M,d,a,K,h,H,k,m,s,S,z,Z");

        String dob = "2002-01-15";
        LocalTime localTime = new LocalTime();
        LocalDate localDate = new LocalDate();
        DateTime dateTime = new DateTime();
        LocalDateTime localDateTime = new LocalDateTime();
        DateTimeZone dateTimeZone = DateTimeZone.getDefault();

        System.out
                .println("dateFormatr : " + dateFormat.print(localDateTime));
        System.out.println("LocalTime : " + localTime.toString());
        System.out.println("localDate : " + localDate.toString());
        System.out.println("dateTime : " + dateTime.toString());
        System.out.println("localDateTime : " + localDateTime.toString());
        System.out.println("DateTimeZone : " + dateTimeZone.toString());
        System.out.println("Year Difference : "
                + Years.yearsBetween(DateTime.parse(dob), dateTime).getYears());
        System.out.println("Month Difference : "
                + Months.monthsBetween(DateTime.parse(dob), dateTime)
                        .getMonths());
    }
}

Link for DateTimeFormat formatter

Joda Time API

I hope this will help you. If you got any question let me know.

P.S.: Thanks to Sumit Arora for giving the output.

dateFormatr : AD,20,2016,2016,26,2,Tue,2016,180,6,28,PM,8,8,20,20,25,20,2,‌​, 
LocalTime : 20:25:17.308 
localDate : 2016-06-28 
dateTime : 2016-06-28T20:25:18.872+05:30 
localDateTime : 2016-06-28T20:25:20.260 
DateTimeZone : Asia/Kolkata 
Year Difference : 14 
Month Difference : 173

Upvotes: 56

Ilya
Ilya

Reputation: 29663

LocalTime localTime = new LocalTime();
LocalDate localDate = new LocalDate();
DateTime dateTime = new DateTime();
LocalDateTime localDateTime = new LocalDateTime();  

any of this contructor creates date in your timezone, where your timezone means time zone DateTimeZone.getDefault();

You want compare current date with date of birth. How do you save date of dirth in database?
If it is with UTC timezone, you can compare with dateTime in UTC TZ

Years.yearsBetween(dateOfBirth, new DateTime(DateTimeZone.UTC));   

If it has Server TZ you should do

Years.yearsBetween(dateOfBirth, new DateTime());  

If it has Server TZ you should do

Years.yearsBetween(dateOfBirth, new DateTime(DateTimeZone.forID("ClientTZ")));  

Upvotes: 7

Related Questions