关于BCD码的相关操作

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

注意:测试金额的单位是分,不是元。

你可能感兴趣的:(BCD,金额,金额转BCD,BCD码,日期转BCD)