java实现纠正日期时间

来源:互联网 发布:大疆osmo软件 编辑:程序博客网 时间:2024/06/05 23:59

import java.util.StringTokenizer;

public class CorrectDateTime {

 //本程序能纠正以下几种格式的日期时间

 //2008年7月1日 2:3:3
 //2008年7月1日 2:3:13
 //2008年7月1日 2:30:13
 //2008年7月1日 12:30:13
 //2008年7月11日 12:30:13
 //2008年10月11日 12:30:13
 //2008年10月11日 12:30:13
 //2008-7-1 2:3:3
 //2008-7-1 2:3:13
 //2008-7-1 2:30:13
 //2008-7-1 12:30:13
 //2008-7-11 12:30:13
 //2008-10-11 12:30:13
 //2008-10-11 12:30:13
 
 /**
  * 转换成 2008年08月01日 16:20:30 类型
  * @param datetime 需要被转换的时间
  */
 public static String correctChinese(String datetime){
  datetime=datetime.trim();
  datetime=datetime.replaceAll(" ", " ");
  String newdatetime="";
  StringTokenizer token=null;
  if(datetime.contains("年")&&datetime.contains(":")){   
   datetime=datetime.replaceAll("年", ":");
   datetime=datetime.replaceAll("月", ":");
   datetime=datetime.replaceAll("日", ":");
   datetime=datetime.replaceAll(" ", "");
   token=new StringTokenizer(datetime,":");
   int i=-1;
   while (token.hasMoreTokens()) {
    i++;
    String temp=token.nextToken();
    if(i==0){
     newdatetime=temp+"年";
    }
    else if(i==1){
     if(newdatetime.length()==2){
      newdatetime+=temp+"月";
     }
     else{
      newdatetime+=0+temp+"月";
     }
    }
    else if(i==2){
     if(newdatetime.length()==2){
      newdatetime+=temp+"日 ";
     }
     else{
      newdatetime+=0+temp+"日 ";
     }
    }
    else if(i==3){
     if(newdatetime.length()==2){
      newdatetime+=temp+":";
     }
     else{
      newdatetime+=0+temp+":";
     }
    }
    else if(i==4){
     if(newdatetime.length()==2){
      newdatetime+=temp+":";
     }
     else{
      newdatetime+=0+temp+":";
     }
    }
    else if(i==5){
     if(newdatetime.length()==2){
      newdatetime+=temp;
     }
     else{
      newdatetime+=0+temp;
     }
    }
   }
   if(i==4){
    newdatetime=newdatetime+":00";
   }
  } 
  if(datetime.contains("-")&&datetime.contains(":")){
   datetime=datetime.replaceAll("-", ":");
   token=new StringTokenizer(datetime,": ");
   int i=-1;
   while (token.hasMoreTokens()) {
    i++;
    String temp=token.nextToken();
    if(i==0){
     newdatetime=temp+"年";
    }
    else if(i==1){
     if(newdatetime.length()==2){
      newdatetime+=temp+"月";
     }
     else{
      newdatetime+=0+temp+"月";
     }
    }
    else if(i==2){
     if(newdatetime.length()==2){
      newdatetime+=temp+"日 ";
     }
     else{
      newdatetime+=0+temp+"日 ";
     }
    }
    else if(i==3){
     if(newdatetime.length()==2){
      newdatetime+=temp+":";
     }
     else{
      newdatetime+=0+temp+":";
     }
    }
    else if(i==4){
     if(newdatetime.length()==2){
      newdatetime+=temp+":";
     }
     else{
      newdatetime+=0+temp+":";
     }
    }
    else if(i==5){
     if(newdatetime.length()==2){
      newdatetime+=temp;
     }
     else{
      newdatetime+=0+temp;
     }
    }
   }
   if(i==4){
    newdatetime=newdatetime+":00";
   }
  }
  return newdatetime;  
 }
 
 /**
  * 转换成 2008-08-01 16:20:30 类型
  * @param datetime 需要被转换的时间
  */
 public static String correctEnglish(String datetime){
  datetime=datetime.replaceAll(" ", " ");
  datetime=datetime.trim();
  String newdatetime="";
  if(datetime.contains("年")&&datetime.contains(":")){   
   datetime=datetime.replaceAll("年", ":");
   datetime=datetime.replaceAll("月", ":");
   datetime=datetime.replaceAll("日", ":");
   datetime=datetime.replaceAll(" ", "");
   String temp[]=datetime.split(":");
   for (int i = 0; i < temp.length; i++) {
    if(i<3){
     if(temp[i].length()==4){
      newdatetime=temp[i];
     }
     else if(temp[i].length()==2){
      newdatetime+="-"+temp[i];
     }
     else if(temp[i].length()==1){
      newdatetime+="-"+0+temp[i];
     }
    }
    else{
     if(temp[i].length()==2){
      newdatetime+=":"+temp[i];
     }
     else if(temp[i].length()==1){
      newdatetime+=":"+0+temp[i];
     }
    }    
   }
   if(temp.length<6){
    newdatetime+=":00";
   }
   newdatetime=newdatetime.replaceFirst(":", " ");
  }
  else if(datetime.contains("-")&&datetime.contains(":")){
   int front=datetime.indexOf(" ");
   int behind=datetime.lastIndexOf(" ");
   String date=datetime.substring(0,front);
   String time=datetime.substring(behind+1);
   String newdate="";
   String newtime="";
   StringTokenizer token=new StringTokenizer(date,"-");
   while (token.hasMoreTokens()) {
    String temp=token.nextToken();
    if(temp.length()==4){
     newdate=temp;
     continue;
    }
    else if(temp.length()==2){
     newdate+="-"+temp;
     continue;
    }
    else{
     newdate+="-"+0+temp;
    }    
   }
   String timeTemp[] = time.split(":");
   if (timeTemp.length == 3) {
    if (timeTemp[0].length() == 2) {
     newtime = timeTemp[0];
    } else {
     newtime = 0 + timeTemp[0];
    }

    if (timeTemp[1].length() == 2) {
     newtime += ":" + timeTemp[1];
    } else {
     newtime += ":0" + timeTemp[1];
    }
    if (timeTemp[2].length() == 2) {
     newtime += ":" + timeTemp[2];
    } else {
     newtime += ":0" + timeTemp[2];
    }
   } else {
    if (timeTemp[0].length() == 2) {
     newtime = timeTemp[0];
    } else {
     newtime = 0 + timeTemp[0];
    }

    if (timeTemp[1].length() == 2) {
     newtime += ":" + timeTemp[1];
    } else {
     newtime += ":0" + timeTemp[1];
    }
    newtime += ":00";
   }
   newdatetime = newdate + " " + newtime;
  }
  return newdatetime;
 }
 
 public static void main(String[] args) {
  String time="2008-7-1 2:3:3";
  System.out.println(CorrectDateTime.correctChinese(time));
  System.out.println(CorrectDateTime.correctEnglish(time));
 }
}

原创粉丝点击