在joda-time解析日和时间解析异常

时间:2017-05-04 17:23:06

标签: java jodatime

问题非常简单,我有一个每天或每周安排的TimerTask。 (取决于配置文件中给定的开始日期和时间段)。 因此,在配置文件中,我指定执行期间的星期几和执行时间。但Joda-Time拒绝使用我的约会:(

这是基本输入:

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: Invalid format: "Tue 12:00:00"

有人可以解释我为什么我不能像这样解析这个日期,并且可能指出我正确的方向来解决这类问题。当然,我可以手动解析日期并在日历中设置内容,但如果像Joda-Time这样的东西可以为我做的话,我不想重新发明轮子。

2 个答案:

答案 0 :(得分:3)

工作日文本Tue可能与您的默认语言环境不匹配。

DateTimeFormatter formatter = 
        DateTimeFormat.forPattern("EEE HH:mm:ss").withLocale(Locale.ENGLISH);

答案 1 :(得分:2)

您可以使用区域设置。以下代码工作正常。

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);
    }

}

输出:

  

Thu 23:36:33

     

2000-12-28T23:36:33.000 + 06:00

资源链接:https://stackoverflow.com/a/41465180/2293534