将Date + TIme Picker变量分配给DateTime(Joda)或Date变量

时间:2017-11-07 11:13:26

标签: java android datepicker jodatime

我已经尝试了很多这个问题的解决方案一段时间了,但没有运气。

我有2个采摘者,一个是日期选择器,另一个是时间选择器。当用户选择他们的日期和时间时,选择存储在这些变量中:

  • int dayNow
  • monthNow
  • yearNow
  • hourNow
  • minuteNow

我想要实现的是我可以将这些变量分配到DateTime变量中。例如:

  

DateTime timeselectedbyuser = dayNow + monthNow + yearNow + hourNow + minuteNow;

我之所以需要它是DateTime类型的原因是我正在使用JodaTime并且正在进行计算,以便在当前时间和用户通过我的日期选择器选择的时间之间获得时间上的差异。

以下是我尝试过的一种不成功的方法:

//START DATE SELECTED BY USER
            timeselectedbyuser = DateTime.parse(String.valueOf(dayNow + monthNow + yearNow + hourNow + minuteNow));

            //CURRENT DATE
            currentdatetime = new DateTime();
            DateTimeFormatter form = DateTimeFormat.forPattern("dd MMM yyyy" + " h:mm a ");


            long millis1 = timeselectedbyuser.getMillis();
            long milis2 = currentdatetime.getMillis();
            long diff = milis2 - millis1;

            long diffinMinutes = diff / (60 * 1000);



            diffinmins.setText((int) diffinMinutes);

有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

我想问题是您不能简单地添加int个变量并将其解析为String以获取DateTime。您必须使用格式或使用jodatime Doc提供的org.joda.time.DateTime构造函数之一:

DateTime dt = new DateTime(yearNow, monthNow, dayNow, hourNow, minuteNow);

或使用SimpleDateFormat

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy:MM:dd:HH:mm");
Date date = null;
try {
    date = simpleDateFormat.parse(yearNow + ":" + monthNow + ":" + dayNow + ":" + hourNow + ":" + minuteNow);
} catch (ParseException e) {
    e.printStackTrace();

检查JavaDoc以找到日期格式的正确格式字符串。例如,如果使用24小时制,则必须使用HH;如果使用12小时制,则必须使用KK:a

希望这有帮助