Java将日期(例如2008年5月29日星期四下午1:45)解析为更有用的格式?

时间:2011-06-17 23:41:20

标签: java parsing datetime date

我需要为当前项目解析Thursday, May 29, 2008 1:45 PM之类的日期,并且没有太多时间完成它。我意识到我可以写一些自定义解析器,但这需要一段时间,我已经尝试了一些我发现的日期解析器,但没有人为此工作,如果有人有任何建议,我将不胜感激。我主要只需要将月,日和年作为整数捕获,例如:

int month = 5;
int date = 29;
int year = 2008

感谢任何建议

3 个答案:

答案 0 :(得分:4)

使用SimpleDateFormat。根据文档,您的日期字符串的模式将是"EEEE, MMMM d, yyyy h:mm a"。您可以使用此模式创建SimpleDateFormat对象,并使用它来解析字符串:

DateFormat dateParser = new SimpleDateFormat("EEEE, MMMM d, yyyy h:mm a");
Date myDate = dateParser.parse("Thursday, May 29, 2008 1:45 PM");

正如BalusC在评论中所述,如果您的代码将用于未将英语设置为主要语言的计算机上,则上述代码段将失败。为避免这种情况,请在构造解析器时明确指定英语。

 DateFormat dateParser = new SimpleDateFormat("EEEE, MMMM d, yyyy h:mm a", Locale.ENGLISH);

要从日期对象中提取单个值,您需要构建Calendar

Calendar calendar = Calendar.getInstance(); // or Calendar.getInstance(Locale.ENGLISH);
calendar.setTime(myDate);

然后,您可以询问它所需的值。

int month = calendar.get(Calendar.MONTH);
int date = calendar.get(Calendar.DATE);
int year = calendar.get(Calendar.YEAR);

答案 1 :(得分:0)

public Date dateFormat(String inputTimestamp) {
    DateFormat dateFormat = new SimpleDateFormat("E, MMM dd, yyyy hh:mm a", Locale.US);
    Date date = null;
    try {
        date = dateFormat.parse(inputTimestamp);
    } catch (ParseException ex) {
        System.err.println("There was a parse exception :"+ex.getMessage());
    }
    return date;
}

使用SimpleDateFormat格式化日期。

答案 2 :(得分:-1)