比如说:我有
String a= "may 22-may 28 Free"
来自回应。 从服务如何改变到这样?
Tue,5.22- thur,5.28
注意:最后给出了两个空格,即日期之后,然后一个文本是免费的,所以忽略了这一点,只考虑响应的日期,该怎么办?任何想法?
DateFormatter formatter = new SimpleDateFormat("dd-MM-yyyy:HH:mm:SS");
convertedDate = (Date) formatter.parse(a);
但是我无法实现,因为我无法根据预期的输出进行分割并正确显示
像这样的星期二,5.22-thur,5.28。
如何实现这一目标?
提前致谢
答案 0 :(得分:0)
没有内置的Parser可用于您拥有的String和您想要的返回类型。您可以查看此处支持的所有可用日期和时间模式http://docs.oracle.com/javase/1.5.0/docs/api/java/text/SimpleDateFormat.html
你必须编写自己的解析器。
您可以尝试先使用' - '和''(进一步的空格)拆分字符串。然后我相信你可以很容易地获得你的格式。
简单的代码是:
字符串a =“可能22-may 28 Free”; String [] array = new String [2]; array = a.split(' - ');
//你将数组设置为{'可能22','可能28免费'} - 让我们来看看 第一个数组值,即数组[0]
String date [] = new String [2]; date = array [0] .split('');
//您将日期数组设置为{'may','22'}
您可以创建一个switch-case来返回Month('may')字符串的正确月份数,并按原样使用日期('22')。
要获得星期几 - 请使用以下代码:(确保您也有年份)
日历c = Calendar.getInstance(); c.setTime(yourDate); int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
这是我建议的最简单的代码。你肯定可以进一步改进它。此外,每当您获得一个包含2个以上属性的数组时(根据给定示例),最后一个字符串为“Free”,您可以在那里停止执行。
希望它有所帮助!
答案 1 :(得分:0)
我想你想要这样的东西:
final String a = "dec 22-may 28";
final int currentYear = Calendar.getInstance().get(Calendar.YEAR);
final SimpleDateFormat stringToDate = new SimpleDateFormat("MMM dd");
final SimpleDateFormat dateToString = new SimpleDateFormat("EE,M.dd");
final String[] dates = a.split("-");
// First
Date convertedDate = stringToDate.parse(dates[0]);
final Calendar c1 = Calendar.getInstance();
c1.setTime(convertedDate);
c1.set(Calendar.YEAR, currentYear);
System.out.println(c1.getTime());
System.out.println(dateToString.format(c1.getTime()));
// Second
convertedDate = stringToDate.parse(dates[1]);
final Calendar c2 = Calendar.getInstance();
c2.setTime(convertedDate);
c2.set(Calendar.YEAR, currentYear);
if (c2.before(c1)) {
c2.set(Calendar.YEAR, currentYear + 1);
}
System.out.println(c2.getTime());
System.out.println(dateToString.format(c2.getTime()));
请记住,我使用 dec-may ,因为这是我能想到的最糟糕的情况。另请注意,我将第一个日期作为当年,第二个日期可能是明年(就像在这种情况下)。
答案 2 :(得分:-1)
您可以使用以下代码尝试。
public static void main(String[] args) {
String a= "may 22-may 28" ;
String[]arr = a.split("-");
String date1 = arr[0];
String date2 = arr[1];
String result = getFormattedDate(date1) +"- " + getFormattedDate(date2);
System.out.println(result);
//Output is Fri,5.22- Thu,5.28
}
public static String getFormattedDate(String inputDate){
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd");
SimpleDateFormat sdf2 = new SimpleDateFormat("EE,M.dd");
String result = "";
Date d1 = null;
try {
d1 = sdf.parse(inputDate);
result = sdf2.format(d1);
} catch (ParseException e) {
e.printStackTrace();
}
return result;
}