Reputation: 3529
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:
How can I set the current time when I have UTC+1 (Prague - Czech Republic)?
Upvotes: 37
Views: 89861
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
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
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