Java joda time解析日期和时间中的解析异常
问题很简单,我有一个TimerTask,它将每天或每周安排一次。(取决于配置文件中给定的开始日期和期间)。 因此,在配置文件中,我指定了一周中的哪一天和执行时间,以及执行之间的时间间隔。但Joda Time拒绝与我的约会对象合作:( 以下是基本输入:Java joda time解析日期和时间中的解析异常,java,jodatime,Java,Jodatime,问题很简单,我有一个TimerTask,它将每天或每周安排一次。(取决于配置文件中给定的开始日期和期间)。 因此,在配置文件中,我指定了一周中的哪一天和执行时间,以及执行之间的时间间隔。但Joda Time拒绝与我的约会对象合作:( 以下是基本输入: String input = "Tue 12:00:00"; DateTimeFormatter formatter = DateTimeFormat.forPattern("EEE HH:mm:ss"); DateT
String input = "Tue 12:00:00";
DateTimeFormatter formatter = DateTimeFormat.forPattern("EEE HH:mm:ss");
DateTime dateTime = DateTime.parse(input, formatter); // Here parse exception is thrown...
异常消息:java.lang.IllegalArgumentException:无效格式:“周二12:00:00”
有人能解释一下为什么我不能像那样解析这个日期,也许能给我指出解决这类问题的正确方向。当然,我可以手动解析日期并在日历中设置内容,但如果有像Joda Time这样的东西可以为我做,我不想重新发明轮子。工作日文本
Tue
可能与默认区域设置不匹配
DateTimeFormatter formatter =
DateTimeFormat.forPattern("EEE HH:mm:ss").withLocale(Locale.ENGLISH);
工作日文本
Tue
可能与默认区域设置不匹配
DateTimeFormatter formatter =
DateTimeFormat.forPattern("EEE HH:mm:ss").withLocale(Locale.ENGLISH);
您可以使用区域设置。以下代码运行良好
import java.util.Locale;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class Test22 {
public static void main(String[] args) {
// TODO Auto-generated method stub
DateTime currentDate = new DateTime();
DateTimeFormatter dtf = DateTimeFormat.forPattern("EEE HH:mm:ss").withLocale(Locale.ENGLISH);
String formatedDate = dtf.print(currentDate);
System.out.println(formatedDate);
DateTime now = dtf.parseDateTime(formatedDate);
System.out.println(now);
}
}
输出:
星期四23:36:33
2000-12-28 23:36:33.000+06:00
资源链接:您可以使用区域设置。以下代码运行良好
import java.util.Locale;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class Test22 {
public static void main(String[] args) {
// TODO Auto-generated method stub
DateTime currentDate = new DateTime();
DateTimeFormatter dtf = DateTimeFormat.forPattern("EEE HH:mm:ss").withLocale(Locale.ENGLISH);
String formatedDate = dtf.print(currentDate);
System.out.println(formatedDate);
DateTime now = dtf.parseDateTime(formatedDate);
System.out.println(now);
}
}
输出:
星期四23:36:33
2000-12-28 23:36:33.000+06:00
资源链接:另一个问题,我可以将此日期设置为相对于当前周或日期的日期吗?因此,当我想要星期二时,它将是从今天开始的下一个星期二?谢谢帮助。听起来你只想在日期上加1周,即
dateTime.plusWeeks(1)
不太可能,解析后的日期周二12:00:00
似乎是:2000-12-26T12:00:00.000+01:00
。您在初始日期中没有提供任何日期元素(天、月、年),所以Jodatime使用的是2000年的日期元素。我解决了这个问题:只需使用DateTime.now().withDayOfWeek(…).withTime(…)
我在哪里提供从配置文件获得的解析日期时间的信息:DAnother问题,我是否可以将此日期设置为相对于当前周或日期的日期?因此,当我想要星期二时,它将是从今天开始的下一个星期二?感谢帮助。听起来您只想在日期上添加1周,即DateTime.plusWeeks(1)
不太可能,解析后的日期周二12:00:00
似乎是:2000-12-26T12:00:00.000+01:00
。您在初始日期中没有提供任何日期元素(天、月、年),所以Jodatime使用的是2000年的日期元素。我解决了这个问题:只需使用DateTime.now().withDayOfWeek(…).withTime(…)
其中我提供了从配置文件:D中获得的解析日期时间的信息