【问题标题】:Assigning Date+TIme Picker Variables to a DateTime (Joda) or Date Variable将日期+时间选择器变量分配给日期时间 (Joda) 或日期变量
【发布时间】:2017-11-07 11:13:26
【问题描述】:

一段时间以来,我一直在尝试解决这个问题的许多方法,但都没有运气。

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

  • int dayNow
  • 月现在
  • 现在
  • 现在小时
  • 现在分钟

我想要实现的是我可以将这些变量分配给 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);

谁能帮帮我?

【问题讨论】:

    标签: java android datepicker jodatime


    【解决方案1】:

    我想问题在于您不能简单地添加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

    希望这有帮助

    【讨论】:

      猜你喜欢
      • 2013-10-18
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-27
      • 2021-08-15
      • 2020-03-29
      相关资源
      最近更新 更多