1

日付をミリ秒単位で分割して自分の形式で出力しようとしていますが、インデックスが範囲外の例外があります。split("/") の場合は機能しますが、split(".") の場合は機能しません。

なぜこれが起こっているのかわかりません。

コードは次のとおりです。

public class c {

public static void main(String[] arg)
{
    Date date=new Date();                                                                    
     DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss.FFF");                   
     System.out.println(formatter.format(date));

     String a=formatter.format(date);
     String b[]=a.split(" ")[0].split("/");
     String x1=(Integer.parseInt(b[2])-2000)+b[1]+b[0];
     System.out.println("date part is : "+x1);
     String c[]=a.split(" ")[1].split(":");
     System.out.println(c[0]);
     System.out.println(c[1]);
     System.out.println(c[2]);
     System.out.println(c[2].trim().split(".")[0]);// exception at this line
     System.out.println(c[2].trim().split(".")[1]);
     String x2=c[0]+c[1]+c[2].split(".")[0]+c[2].split(".")[1]+"";
     System.out.println("time part is : "+x2);
}
}

ログは次のとおりです。

08/10/2013 12:02:18.002
date part is : 131008
12
02
18.002
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:0   at c.main(c.java:22)
4

3 に答える 3

5

java.lang.String.split(String regex)引数として正規表現を取ります。

単一のドット.は、「任意の文字」の正規表現です。したがって、すべての文字の後に入力を分割します。

ドットをエスケープする:

split("\\.");
于 2013-10-08T06:52:20.490 に答える
0

分割しないようにしてください...いつでもこのformatter.dayを使用できます。.月 | .時間かそこら....

于 2013-10-08T06:58:30.303 に答える
0

java.util.regex.Pattern.quote(".") を使用して、文字列を "." で分割できます。

str.split(java.util.regex.Pattern.quote("."));

于 2013-10-08T06:56:14.030 に答える