这两天碰到一个需求,需要将日期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
如果觉得本博客对您有帮助,请 赞助作者 。
转载请注明:lxw的大数据田地 » Java和Shell版 十进制和十六进制(Hex)互转