0

このデータの2005年12月19日17時30分45秒からマイル秒への変換に少し問題があり ます。理由はわかりません。6月28日17:30:45CEST1995時間:804353445798に間違った翻訳が表示されます。

私が使用したコードはこれです:

private static long ConvertTimeToTimeStamp(String time) {   

  Integer[] data = new Integer[6];
  String [] tokens = time.split(" "); 

  System.out.println(tokens[0]);
  System.out.println(tokens[1]);

  String[] d_m_y = tokens[0].split("/"); 
  String[] hh_mm_ss = tokens[1].split(":"); 

  for (int i = 0; i < d_m_y.length; i++) {
    data[i]=Integer.parseInt(d_m_y[i]); 
    // System.out.println(d_m_y[i]);        
  }

  for (int i = 0; i < hh_mm_ss.length; i++) {
    data[i+3]=Integer.parseInt(hh_mm_ss[i]); 
    //  System.out.println(hh_mm_ss[i]);    
  }
  //Calendar calendar =  Calendar.getInstance(); 
  GregorianCalendar calendar = new GregorianCalendar(); 
  calendar.set(data[0]+1970, data[1], data[2], data[3],data[4],data[5]);

  System.out.println(calendar.getTime().toString()); 
  return calendar.getTimeInMillis(); 
}
4

5 に答える 5

6

日付を手動で解析しないでください。代わりに日付形式を使用してください。

String s = "19/12/2005 17:30:45";
Date d = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse(s);
于 2012-11-30T12:09:25.223 に答える
2

このオブジェクトを最初から日付として扱います。それははるかに信頼性が高くなります。

SimpleDateFormat.parse()を使用して、文字列を日付/時刻に解析します。それ以外の場合は、境界チェックや型チェックなどを行わずに、文字列の解析/分割/再結合などに縮小されます

標準の Java ライブラリを参照しましたが、Joda-Timeは Java で日付処理を行うためのより良い方法であり、より直感的で安全な API のためにこれを採用することをお勧めします。

于 2012-11-30T12:08:43.593 に答える
1

試す...

private static long ConvertTimeToTimeStamp(String time) { 
   //19/12/2005 17:30:45
   SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
   java.util.Date d = sdf.parse(time);
   return d.getTime();
}
于 2012-11-30T12:12:34.147 に答える
1

気にしないで。日付オブジェクトへの文字列にSimpleDataFormatパターンdd/MM/yyyy HH:mm:ssを持つオブジェクトを使用します。parse()

于 2012-11-30T12:09:47.920 に答える
0

年、月、日の順序が混在しています。メソッドは次のset順序でそれらを期待しています:年、月、日、そしてあなたはそれらを、、、として提供してday + 1970monthますyearそうは言っても、実際にはjoda-time のようなライブラリにもっと満足しているかもしれません。

于 2012-11-30T12:09:00.633 に答える