Как правильно установить текущую дату и время в Joda-Time?

Как правильно узнать актуальную дату и время в Joda Time? Под должным образом я подразумеваю время в моей стране. Я читаю официальные страницы и некоторые учебные пособия - есть много вещей о локалях и часовых поясах, но я нашел это довольно запутанным. Я не нашел ни одного примера, как просто получить это.

Мне это нужно для двух вещей:

  1. Чтобы получить текущую для поста в рассеянности,
  2. Чтобы узнать текущее время, которое я "сравню" с датой рождения и вычислю возраст.

Как я могу установить текущее время, когда у меня UTC + 1 (Прага - Чехия)?

Ответ 1

Вот псевдокод для Joda Time, который может быть вам полезен.

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());
    }
}

Ссылка на форматтера DateTimeFormat

Joda Time API

Надеюсь, это поможет вам. Если у вас есть какие-либо вопросы, дайте мне знать.

P.S.: Спасибо Sumit Arora за выдачу результатов.

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

Ответ 2

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

любой из этих contructor создает дату в вашем часовом поясе, где ваш часовой пояс означает часовой пояс DateTimeZone.getDefault();

Вы хотите сравнить текущую дату с датой рождения. Как сохранить дату извлечения в базе данных?  Если это часовой пояс UTC, вы можете сравнить с dateTime в UTC TZ

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

Если у вас есть сервер TZ, вы должны сделать

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

Если у вас есть сервер TZ, вы должны сделать

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