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