把字符串里的数字格式化成标准时间格式 
例如: "today is 20080830" 输出 "today is 2008-08-30" 
     "今天的日期是20080830" 输出 "今天的日期是2008-08-30" 
非作业贴,我自学的。我用了 几个类都没有找到匹配的格式。   我才接触到这里,求高手帮忙。

解决方案 »

  1.   

    用charAt函数遍历每一个字符,判断是否数字,记下第一个是数字的字符在字符串中的位置,然后用substring函数截取这六个数字,再根据要求插入“-”,好久没操作过字符串了,这样应该可以吧。
    要是你的字符串后面的六个字符永远是表示日期的六个数字,那就更简单了
    希望对你有帮助
      

  2.   

    年 月 日用getFullYear getUTCMonth getDate 分别得到在+字符串
      

  3.   


    用日期相关类做???
    那就先把拿到的“20080830”转换成日期,然后再用
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
      

  4.   

    贴一个
    SimpleDateFormat formatter1 = new SimpleDateFormat("yyyyMMdd");
    SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd");
    String datestring = "today is 20080830 \n 今天的日期是20080830";
    Matcher m = Pattern.compile("\\d{8}").matcher(datestring);
    StringBuffer sb = new StringBuffer();
    while (m.find()) {
    String s = m.group(0);
    try {
    Date date = formatter1.parse(s);
    s = formatter2.format(date);
    } catch (ParseException e1) {}
    m.appendReplacement(sb, s);
    }
    m.appendTail(sb);
    System.out.println(sb);
      

  5.   


    String s="今天的日期是20080830";
    //String s="today is 20080830";
    s=s.replaceAll("(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3");
    System.out.println(s);不过有点粗暴哈, 他会把所有挨在一起的6个数字变成 xxxx-xx-xx 的形式
      

  6.   

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;public class TsetDate { /**
     * @param args
     */
    public static void main(String[] args) {
    String sr = "20080303";
    SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
    SimpleDateFormat f1 = new SimpleDateFormat("yyyy-MM-dd");
    Date d = new Date();
    try {
    d = f.parse(sr);
    } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    System.out.println(f1.format(d));
    }}
      

  7.   

    public class TsetDate {/**
    * @param args
    */
    public static void main(String[] args) {
    String sr = "20080303";
    SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
    SimpleDateFormat f1 = new SimpleDateFormat("yyyy-MM-dd");
    Date d = new Date();
    try {
    d = f.parse(sr);
    } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    System.out.println(f1.format(d));
    }}
      

  8.   

    那你肯定要先从字符串里把这6位数字提取出来吧,然后用日期类麻烦点。用DateFormat转成Date,再用SimpleDateFormat转回来
      

  9.   

    一个正则搞定    public static void main(String[] args) {
            String s1 = "今天的日期是20080830";
            String s2 = "today is 20080830";
            String reg = "(.*\\D*)(\\d{4})(\\d{2})(\\d{2})(.*)";
            System.out.println(s1.replaceAll(reg, "$1$2-$3-$4$5"));
            System.out.println(s2.replaceAll(reg, "$1$2-$3-$4$5"));
        }
      

  10.   

    7L的就不错,用到正则,SimpleDateFormat
      

  11.   

    楼主,我实现了一个Date的子类
    不知道这个满不满足你“用Date相关类处理”这个要求
    这个类可以让你用含有日期的字符串生成一个Date类
    不过有一定的限制就是了import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;public class MyDate extends Date{
    private static final long serialVersionUID = 1L;
    private String[] des;

    //构造方法,生成一个Date对象
    public MyDate (String arg0) {
    des = arg0.split("\\d{8}");
    String str = arg0.replaceAll("(.*\\D*)(\\d{8})(.*)", "$2");
    SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
    try {
    long to = df.parse(str).getTime();
    setTime(to);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    }

    //通过该方法输出目标字符串
    public String getNewOutput() {
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    String str = df.format(this);
    if (des.length > 0) {
    str = des[0] + str;
    for (int i=1;i<des.length;i++) {
    str = str + des[i];
    }
    }
    return str;
    }

    //试例,正式用这个类的时候,可以删掉这个main方法
    public static final void main(String arg[]) {
    MyDate date = new MyDate("我的日期是20080909。");
    //这个date就是一个实实在在的Date对象,
    //任何Date对象的方法都对其适用
    System.out.println(date);
    System.out.println(date.getNewOutput());
    }
    }
      

  12.   

    送给我吧,
    String sr = "20080303";
    SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");