【发布时间】:2017-11-07 09:21:56
【问题描述】:
我是 android 新手,在使用 jodatime 时遇到了麻烦。我遇到了和这里很多人一样的错误,我已经尝试了所有的建议,但没有什么对我有用。我正在尝试显示用户从日期和时间选择器中选择的变量,例如'dayNow, monthNow' 等到一个名为 'timeselected' 的组合变量中,并将其设置为文本框,这样我就可以在 jodatime 中进一步进行计算。
代码如下:
DateTime dateTime = new DateTime(timeselected);
DateTimeFormatter fmt = DateTimeFormat.forPattern("dd MM yyyy" + "\n" + " h:mm a ");
String formattedtime = fmt.print(dateTime);
CalculateButton.setText(formattedtime);
// Plus some hours, minutes, and seconds to the original DateTime.
DateTimeFormatter fmt2 = DateTimeFormat.forPattern("dd MM yyyy" + "\n" + " h:mm a ");
DateTime dateTime1 = dateTime.plusHours(timeadded);
String endtimecalc = fmt2.print(dateTime1);
TextView endtime = (TextView) findViewById(endtimetextView);
endtime.setVisibility(View.VISIBLE);
endtime.setText(endtimecalc);
String timeselected = dayNow + "-" + monthNow + "-" + yearNow + " " + hourNow + ":" + minuteNow;
DateTime datetimselected = DateTime.parse(timeselected);
usertimeselection.setText((CharSequence) datetimselected.toDate());
}
});
致命异常:主要 进程:com.almac.tracker,PID:29114 java.lang.IllegalArgumentException:无效格式:“2017-11-23 T 4:56”在“T 4:56”格式错误 在 org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:945) 在 org.joda.time.DateTime.parse(DateTime.java:160) 在 org.joda.time.DateTime.parse(DateTime.java:149) 在 com.almac.tracker.CreateLine$5.onClick(CreateLine.java:274) 在 android.view.View.performClick(View.java:6219) 在 android.view.View$PerformClick.run(View.java:24482) 在 android.os.Handler.handleCallback(Handler.java:769) 在 android.os.Handler.dispatchMessage(Handler.java:98) 在 android.os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:6540) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
【问题讨论】:
-
这个肯定有重复,但是 Joda Time 对格式很挑剔;首先,您需要使用
-而不是/分隔日期组件。有关更多信息,请参阅the docs - 例如,可能需要通过8-11-2017 T 4:16:00。 -
我已经把上面所有的相关代码都加进去了,请大家看看
标签: android jodatime android-jodatime