这两天碰到一个需求,需要将日期yyyy-MM-dd、到秒粒度的时间戳,转换成十六进制(HexString)。
记录一下实现方法。
Java版本:
String day = "2015-05-21";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = new Date();
//将2015-05-21转换成时间戳
int unixtimstamp1 = (int) (sdf.parse(day).getTime()/1000);
//将时间戳转换为十六进制字符串
String hexString = String.format("%08X", unixtimstamp1);
System.out.println("HexString: [" + hexString + "] ..");
//将十六进制字符串转回时间戳
int unixtimstamp2 = Integer.parseInt(hexString,16);
d.setTime(unixtimstamp2*1000l);
System.out.println(sdf.format(d));
运行结果:
HexString: [555CAF80] ..
2015-05-21
Shell版本:
##将2015-05-21转换成时间戳
unixtimstamp1=`date -d "2015-05-21" +%s`
##将时间戳转换为十六进制字符串
hexString=`printf "%08X\n" $unixtimstamp1`
echo "HexString: [${hexString}] .."
##将十六进制字符串转回时间戳
unixtimstamp2=`echo $((16#${hexString}))`
day=`date -d "1970-01-01 UTC $unixtimstamp2 seconds" +%F`
echo $day
运行结果:
HexString: [555CAF80] ..
2015-05-21
如果觉得本博客对您有帮助,请 赞助作者 。