Java 以12小时格式而不是24小时格式显示时间。

Java 以12小时格式而不是24小时格式显示时间。,java,Java,请任何人帮助将格式为“3676bb6c”的hexstring转换为格式为“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 { /** * @p

请任何人帮助将格式为“3676bb6c”的hexstring转换为格式为“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;
    }


}
import java.text.simpleDataFormat;
导入java.util.Calendar;
导入java.util.Date;
导入java.util.Locale;
公共级己酸盐{
/**
*@param args
*/
公共静态void main(字符串[]args){
//TODO自动生成的方法存根
//Print.logInfo(“REV:+revhextate”);
//字符串revHexDate=“369E0Ec7”;
字符串revHexDate=“F52E32F8”;
int decInt=十六进制(revHexDate);
系统输出打印项次(“11111”+分贝);
国际年=(决策>>26);
System.out.println(“年为:“+年”);
整月=(决策>>22)&0x0f;
System.out.println(“月份为:“+月份”);
int date=(决策>>17)和0x1f;
System.out.println(“日期为:“+date”);
int hourOfDay=(决策>>12)和0x1f;
整数小时=分贝/3600;
系统输出打印LN(“新hrsis”+小时);
System.out.println(“houroday是:+houroday”);
整数分钟=(决策>>6)和0x3f;
System.out.println(“分钟为:“+分钟”);
整数秒=(小数点)&0x3f;
System.out.println(“第二个是:“+second”);
日历=Calendar.getInstance();
日历设置(年、月、日、小时、日、分、秒);
//System.out.println(calendar.getTime());
SimpleDataFormat displayFormat1=新的SimpleDataFormat(“ddMMYY”,Locale.US);
字符串DDMMYY=displayFormat1.format(calendar.getTime());
System.out.println(“DDMMYY为:+DDMMYY”);
SimpleDataFormat displayFormat2=新的SimpleDataFormat(“hhmmss”,Locale.US);
字符串HHMMSS=displayFormat2.format(calendar.getTime());
System.out.println(“hhmmss是”+hhmmss);
}
公共静态int-hex2decimal(字符串s){
字符串数字=“0123456789ABCDEF”;
s=s.toUpperCase();
int-val=0;
对于(int i=0;i
使用以下方法将hexstring转换为日期

Date d=new Date(Long.parseLong("F52E32F8", 16));
System.out.println(d);
输出
2月17日星期二20:07:25 IST 1970

您的问题是使用
hh
而不是
hh
来显示小时数,
hh
用于显示12小时格式。 而不是使用

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

此外,您不必创建自己的方法来将十六进制转换为十进制,您可以使用其他方法

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

正如Java初学者所说。

您的十六进制字符串是什么?从EPOCH开始的毫秒数?在我看来,它就像是从EPOCH开始的秒数。
long decLong = Long.parseLong("F52E32F8", 16);