将String转换为具有日期格式的String

时间:2014-10-15 15:02:00

标签: java string parsing format

我想编写一个java方法,它在输入中接受一个字符串,并按照以下规则输出另一个字符串:

input        output
"123456"     "12:34:56"
"23456"      "02:34:56"
"3456"       "00:34:56"
"456"        "00:04:56"
"6"          "00:00:06"

任何帮助将不胜感激。感谢。

2 个答案:

答案 0 :(得分:0)

我建议使用DateFormat,如下所示。这将解决所有转换的负担。

    DateFormat formatFrom = new SimpleDateFormat("HHmmss");
    DateFormat formatTo = new SimpleDateFormat("HH:mm:ss");
    String origTimeString = "456";
    String newDateString = null;
    try {
        String formattedString = 
                        String.format("%06d", Integer.parseInt(origTimeString));
        Date date = formatFrom.parse(formattedString);
        newDateString = formatTo.format(date);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    System.out.println("Updated string : " + newDateString);

答案 1 :(得分:0)

复制此方法并使用它。

1)如果字符串长度超过6,则返回“ERROR”。

2)首先使用'0'

修复字符串

3)第二个用':'

修复字符串

4)StringBuilder用于concat。避免使用'+'运算符进行连接。

5)方法'getDate'是静态的,因为'main'方法也是静态的。

public static String getDate(String variable){

    StringBuilder aux= new StringBuilder();
    StringBuilder string= new StringBuilder();
    int length = variable.length();


    if(length>6 || length<=0){
        return "ERROR";
    }else{

        //first to fill blanks with 0
        for(int i=0;i<6-length;i++){
            aux.append("0");
        }
        variable = aux.append(variable).toString();


        //second to put :
        for(int i=0;i<6;i++){

           if(i%2==0 && i!=0){  
               string.append(":");
           }
           string.append(variable.charAt(i));
        }
        return string.toString();
    }
}

public static void main(String[] args) {
    System.out.print(getDate("464"));
}