用于获取解析日期的Java String,indexof和substring

时间:2015-10-12 03:07:13

标签: java

基本上,我正在做的是得到一个日期,例如" 4/18/1972"并且正确地反复格式化" 1972年4月18日"。我能够超越第一道障碍,

这是我最初构建它的代码:

    System.out.print("Date: ");
    receivedDate = user.next();

    String receivedDateMonth = receivedDate.substring(0, receivedDate.indexOf("/"));
    int receivedMonth = Integer.parseInt(receivedDateMonth);    

    if(month >= 1 && month <= 9)
    {
        String receivedDateDay = receivedDate.substring(2, receivedDate.indexOf("/"));
        int day = Integer.parseInt(receivedDateDay);
        System.out.println(day);
    }

正如我写的那样,我正在测试以确保receiveDateMonth正确显示并且确实如此,但是当我搬到那一天时,它并没有起作用。我一直收到错误,&#34;字符串索引超出范围:-1&#34;。我认为它以&#34; 2&#34;为中心。在那里,所以我改变了它的价值并且问题仍然存在。我把2放入,因为我希望它从第一个数字0开始计数,然后是&#34; /&#34;,以便在此之后开始下一个解析(我会改变10-12做类似的,转到3),然而,对于我的生活,我无法弄清楚这一点。 有人可以指点我正确的方向吗? 非常感谢。

1 个答案:

答案 0 :(得分:1)

我在Parse String to Date with Different Format in Java找到了答案,根据您的需要修改了日期格式

MMMM表示String

中的完整月份
SimpleDateFormat fromUser = new SimpleDateFormat("MM/dd/yyyy");
SimpleDateFormat myFormat = new SimpleDateFormat("MMMM dd, yyyy");

try {    
    String reformattedStr = myFormat.format(fromUser.parse(inputString));
} catch (ParseException e) {
    e.printStackTrace();
}