bcd参考:http://www.baike.com/wiki/BCD%E7%A0%81
(1)获取日期和时间的BCD码
比如 2013年12月6日21:23:10,转化为BCD码就是131206212310
- static public String getTime2() {
- SimpleDateFormat format = new SimpleDateFormat("yyMMddHHmmss");
- return format.format(new Date());
- }
(2)把BCD码转化为金额
- /***
- * 从BCD获取金额,单位是元,"000000011023"-->"110.23";"000000000013"-->"0.13"
- * @param bcd
- * @return
- */
- public static String getMoneyFromBcd(String bcd){
- if(StringUtil.isNullOrEmpty(bcd)){
- return null;
- }
- int dotLoc=bcd.length()-2;
- String money=bcd.substring(0,dotLoc )+Constants.DOT+bcd.substring(dotLoc);
- bcd=money.replaceAll("^[0]+", "");
- if(bcd.startsWith(".")){//.23-->0.23
- bcd=0+bcd;
- }
- return bcd;
- }
测试:
- @Test
- public void test_getMoneyFromBcd() {
- String hex = "000000000013";
- System.out.println(BcdUtil.getMoneyFromBcd(hex));
- }
运行结果:0.13
注意:单位是元。
(3)把金额转化为BCD码
- /***
- * 把金额转化为BCD码,注意:金额的单位是分,不是元.
- *
- * @param moneyInt
- * @return
- */
- public static String moneyToBcd(long moneyInt){
- String moneyBCDStr=String.valueOf(moneyInt);
- while(moneyBCDStr.length()<12){
- moneyBCDStr=0+moneyBCDStr;
- }
- return moneyBCDStr;
- }
比如把1角2分转化为BCD码:
- @Test
- // ok
- public void test_moneyToBcd() {
- long money = 12L;
- System.out.println(BcdUtil.moneyToBcd(money));
- }
运行结果:
000000000012
注意:测试金额的单位是分,不是元。