我正在尝试解析日期字符串,我的问题是这些字符串可以有不同的日期格式,这取决于它们谈论的是今天、明天还是另一天。
- 如果他们谈论今天的 Activity ,格式如下:20:45
- 如果他们谈论明天的 Activity ,格式是:明天 20: 45
- 如果他们谈论另一天,格式为:2016 年 5 月 10 日
所以我想知道我是否可以使用相同的 DateFormat 解析它们三个,如果不能,最好的方法是什么。
DateFormat format = new SimpleDateFormat("EEEE d ' de' MMMM ' de' yyyy", locale);
最佳答案
您不能使用相同的 SimpleDateFormat 来解析所有类型,这也不是一个好的做法,不可读且更复杂,不添加任何特殊值,我会尝试这样的事情:
private static final SimpleDateFormat formatHHMM = new SimpleDateFormat("hh:mm");
private static final SimpleDateFormat formatOther = new SimpleDateFormat("MMM dd yyyy");
private static String convertDate(Date curDate) {
if (isToday(curDate)) {
return formatHHMM.format(curDate);
}
else if (isTomorrow(curDate)) {
return "Tomorrow " + formatHHMM.format(curDate);
}
return formatOther.format(curDate);
}
private static boolean isToday(Date curDate) {
Date today = Calendar.getInstance().getTime();
return today.equals(curDate);
}
private static boolean isTomorrow(Date curDate) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, 1);
Date tomorrow = calendar.getTime();
return tomorrow.equals(curDate);
}
//Check the code with this
public static void main( String[] args )
{
Date curDate = new Date();
System.out.println( convertDate(curDate));
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, 1);
Date tomorrow = calendar.getTime();
System.out.println( convertDate(tomorrow));
calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, 15);
Date other = calendar.getTime();
System.out.println( convertDate(other));
}
关于java - 解析具有不同日期格式的日期字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36009411/