0

「3676bb6c」形式の16進文字列を「1-10-2013 11:47:44」形式の日付と時刻に変換する方法を教えてください。これを試してみましたが、12時間形式になっていますが、必要です24 時間形式のコードは次のようになります

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

 public class HexToDate {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    //Print.logInfo("REV : " + revHexDate);
     //String revHexDate="369E0Ec7";
    String revHexDate="F52E32F8";
    int decInt = hex2decimal(revHexDate);
    System.out.println("11111 "+decInt);    
    int year = (decInt >> 26);
    System.out.println("year is :"+year);
    int month = (decInt >> 22) & 0x0f;
    System.out.println("month is :"+month);
    int date = (decInt >> 17) & 0x1f;
    System.out.println("date is :"+date);

    int hourOfDay = (decInt >> 12) & 0x1f;
    int hrs=decInt/3600;
    System.out.println("new hrsis "+hrs);
    System.out.println("hourOfDay is :"+hourOfDay);
    int minute = (decInt >> 6) & 0x3f;
    System.out.println("minute is :"+minute);
    int second = (decInt) & 0x3f;
    System.out.println("second is :"+second);


    Calendar calendar = Calendar.getInstance();
    calendar.set(year, month-1, date, hourOfDay, minute, second);

    //System.out.println(calendar.getTime());

    SimpleDateFormat displayFormat1 = new SimpleDateFormat("ddMMYY",Locale.US);

    String DDMMYY = displayFormat1.format(calendar.getTime());
    System.out.println("DDMMYY is :"+DDMMYY);
    SimpleDateFormat displayFormat2 = new SimpleDateFormat("hhmmss",Locale.US);
    String HHMMSS = displayFormat2.format(calendar.getTime());
    System.out.println("hhmmss is "+HHMMSS);    


}
public static int hex2decimal(String s) {
    String digits = "0123456789ABCDEF";
    s = s.toUpperCase();
    int val = 0;
    for (int i = 0; i < s.length(); i++) {
    char c = s.charAt(i);
    int d = digits.indexOf(c);
    val = 16*val + d;
    }
    return val;
    }


}
4

2 に答える 2

1

次の方法を使用して、16 進文字列を日付に変換します

Date d=new Date(Long.parseLong("F52E32F8", 16));
System.out.println(d);

出力 火曜日 2 月 17 日 20:07:25 IST 1970

于 2013-10-16T09:24:39.733 に答える
1

あなたの問題は、時間を表示するhh代わりに使用していることです。ここで述べたように、は 12 時間形式を表示するために使用されます。使用する代わりにHHhh

SimpleDateFormat displayFormat2 = new SimpleDateFormat("hhmmss",Locale.US);

使用する

SimpleDateFormat displayFormat2 = new SimpleDateFormat("HHmmss",Locale.US);

また、16 進数を 10 進数に変換する独自のメソッドを作成する必要はありませんでした。

long decLong = Long.parseLong("F52E32F8", 16);

javaBeginnerが述べたように。

于 2013-10-16T09:32:02.920 に答える