请任何人帮助如何将“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;
}
}
答案 0 :(得分:1)
使用以下方法将hexstring转换为日期
Date d=new Date(Long.parseLong("F52E32F8", 16));
System.out.println(d);
<强>输出强> 2月17日星期二20:07:25 IST 1970
答案 1 :(得分:1)
您的问题是您使用hh
代替HH
来显示小时数。 As stated here,hh
用于显示12小时格式。
而不是使用
SimpleDateFormat displayFormat2 = new SimpleDateFormat("hhmmss",Locale.US);
使用
SimpleDateFormat displayFormat2 = new SimpleDateFormat("HHmmss",Locale.US);
此外,您不必创建自己的方法将十六进制转换为十进制,您可以使用,等等
long decLong = Long.parseLong("F52E32F8", 16);
as javaBeginner 陈述。