gpt4 book ai didi

android - Joda Time 不工作

转载 作者:行者123 更新时间:2023-11-30 00:16:33 25 4
gpt4 key购买 nike

我是 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());

}
});

FATAL EXCEPTION: main Process: com.almac.tracker, PID: 29114 java.lang.IllegalArgumentException: Invalid format: "2017-11-23 T 4:56" is malformed at " T 4:56" at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:945) at org.joda.time.DateTime.parse(DateTime.java:160) at org.joda.time.DateTime.parse(DateTime.java:149) at com.almac.tracker.CreateLine$5.onClick(CreateLine.java:274) at android.view.View.performClick(View.java:6219) at android.view.View$PerformClick.run(View.java:24482) at android.os.Handler.handleCallback(Handler.java:769) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6540) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

最佳答案

来自 DateTime.parse(String str)文档:

Parses a DateTime from the specified string.

This uses ISODateTimeFormat.dateTimeParser().

您的日期时间字符串对 ISODateTimeFormat 无效,它不接受 /-

因此或者将您的/ 更改为- 并遵守规则:date-opt-time = date-element ['T' [time-element] [offset]](请参阅日期和时间元素之间的 'T'!)所以你的日期时间字符串应该是这样的:

String timeselected = yearNow + "-" + monthNow + "-" + dayNow + "'T'" + hourNow + ":" + minuteNow;
DateTime datetimselected = DateTime.parse(timeselected);

要么通过DateTime.parse(String str, DateTimeFormatter formatter) 方法使用您自己的格式化程序。

更新 1

在运行一些测试后,默认解析器确实不接受 'T'。从解析器传递的字符串是:

"2017-11-23T04:56"

因此请确保日期部分"T" 字符和时间部分 之间不存在空格。

String timeselected = yearNow + "-" + monthNow + "-" + dayNow + "T" + hourNow + ":" + minuteNow;

更新 2

附上我的解析器测试代码

public class Main {
public static void main(String[] args) {
String timeselected = "2017-11-23T04:56";
DateTime datetimselected = DateTime.parse(timeselected);
System.out.println(datetimselected.toDate());
}
}

输出:

Thu Nov 23 04:56:00 EET 2017

关于android - Joda Time 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47154122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com