0

コードを添付しています。このコードでは、フラットテキストファイルから日付である文字列を取得しています。AM / PM(12時間形式)で構成されています。私がそれを解析しているとき、それは24時間形式で解析されていないのでうまく解析されていません。現在の時刻とファイルの文字列の時間差が必要です。また、AM / PMのため、24時間形式では変換されません。つまり、PMでもAMでも同じ時間差を示しています。ですから、もしあれば、実りある提案があれば教えてください。本当にありがとうございます。

パブリッククラスキャスティング{

/**
 * @param args
 */
    static FileReader fw;
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        try{
            fw = new FileReader("E://796F_log.txt");
            BufferedReader pw =new BufferedReader(fw);
            String last_Line_From_File="" ; 

            for (String message  = pw.readLine(); message != null ; message = pw.readLine()) {
                    last_Line_From_File = message;
            }

            String[] array_Of_Data = last_Line_From_File.split("\\s") ;
            String time = array_Of_Data[0]+" "+array_Of_Data[1]+" "+array_Of_Data[2] ;

            System.out.println(time);
            DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss a");
            Calendar cal = Calendar.getInstance();
            String current_time = dateFormat.format(cal.getTime());

            Date d1 = dateFormat.parse(time);
            Date d2 = dateFormat.parse(current_time);



            long total_time = d2.getTime()-d1.getTime();
            total_time /= 1000 ;

            System.out.println("current time "+d2.getHours()+":"+d2.getMinutes()+":"+d2.getSeconds()+"\n"+d1.getHours()+":"+d1.getMinutes()+":"+d1.getSeconds());
            if(total_time <= 500)
            {
                System.out.println("working "+total_time);
            }
            else
                System.out.println("nt working   "+total_time);

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("did the smart thing or dumb thing");
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally
        {
            try {
                fw.close();

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                System.out.println("we did attempt closing");

            }

        }
    }

}

4

1 に答える 1

3

問題はあなたのフォーマットです:

"MM/dd/yyyy HH:mm:ss a"

ここHHでは、24時間の値を意味します。したがって、午後7時に「19」を期待しています。「HH」と「a」(AM / PM指定子)の両方を同じフォーマット文字列に含めることは、ほとんどの場合間違っています。

あなたはおそらくどちらかが欲しい

"MM/dd/yyyy hh:mm:ss a"

また

"MM/dd/yyyy h:mm:ss a"

「07:00:00AM」または「7:00:00AM」のようなものを取得するかどうかによって異なります。

日付/時刻の作業を大量に行う場合は、 /の代わりにJodaTimeを使用することをお勧めします。DateCalendar

于 2012-04-20T06:25:25.160 に答える