如何将字符串转换为相应的日,月和日期

时间:2014-07-17 12:08:42

标签: java android string

比如说:我有

    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。
如何实现这一目标?

提前致谢

3 个答案:

答案 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;
}