String date1="2008-1-12";
String year,month,day;如何将date1中的年月日 分别 取到year,month,day中?

解决方案 »

  1.   

    使用 String类的split()方法或是pattern/Matcher类的正则式匹配
      

  2.   


    String str = "1982-08-23";
    String [] arraystr = str.split("-");
      

  3.   

    使用String 的两个方法都可以:
    split(String par);
    subString(int beginIndex, int endIndex);
      

  4.   

    也可以用java的日期处理
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    Date d=sdf.parse(date1);
    String year=d.getYear();
    String month=d.getMonth();
    String day=d.getDate();
      

  5.   

    这样也可以 Pattern p = Pattern.compile("(\\d{4})-(\\d{1,2})-(\\d{1,2})");
    Matcher m = p.matcher("1234-4-4");
    if(m.find()){ System.out.println(m.group(1));
    System.out.println(m.group(2));
    System.out.println(m.group(3));
    }
      

  6.   

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;public class Tester {
    public static void main(String[] args) throws ParseException {
    String date1 = "2008-1-12";
    String year, month, day;
    Calendar cal = Calendar.getInstance();
    cal.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(date1));
    year = String.valueOf(cal.get(Calendar.YEAR));
    month = String.valueOf(cal.get(Calendar.MONTH));
    day = String.valueOf(cal.get(Calendar.DAY_OF_MONTH));
    System.out.println("year="+year+"\nmonth="+month+"\nday="+day);
    }
    }
      

  7.   

    再一个方法:
    import java.util.StringTokenizer;public class Tester {
    public static void main(String[] args) {
    String date1 = "2008-1-12";
    String year, month, day;
    StringTokenizer st = new StringTokenizer(date1,"-");
    year = st.nextToken();
    month = st.nextToken();
    day = st.nextToken();
    System.out.println("year="+year+"\nmonth="+month+"\nday="+day);
    }
    }
      

  8.   

    第三种方法:
    public class Tester {
    public static void main(String[] args) {
    String date1 = "2008-1-12";
    String year, month, day;
    String[] date = date1.split("-");
    year = date[0];
    month = date[1];
    day = date[2];
    System.out.println("year="+year+"\nmonth="+month+"\nday="+day);
    }
    }
      

  9.   

    呵呵
    都回答的这么快,学习了
    string的取子串
    split方法
    SimpleDateFormat   
    都可以的
    看你喜欢哪种方式了
      

  10.   

    強制轉換成 INT類型, 然後INDEXOF選取位置..分別轉成yearInt,monthInt,dayInt三個INT。然後再分別 toString 為   yearString,monthString,dayString
      

  11.   

    4楼的有些问题
     Date类的那些方法返回的int,而且那几个方法已经过时,不推荐使用了
    7楼正解,4楼8楼9楼大致差不多,是解析字符串取出数字的。
    在这里觉得用7楼比较好,解析字符串的作用很强大,该掌握的东西
    不过Calendar的静态常量Month:
    指示月份的 get 和 set 的字段数字。这是一个特定于日历的值。一年中的第一个月是 JANUARY,它为 0;最后一个月取决于一年中的月份数。 
    所以楼主的字符串格式化后的结果为 0月份
      

  12.   

    最简单有效快速的方法就是 split
    inkfish 说 的第3种方法
      

  13.   

    String year=data1.subString(0,4);
    String month=data1.subString(indexOf("-"),indexOf("-")+indexOf(subString(indexOf(-),data1.length())));
      

  14.   

    StringTokenizer我以前就是用的这个,处理字符串的时候比较有效