金额转大写及日期转大写(java)
银行、单位和个人填写的各种票据和结算凭证是办理支付结算和现金收付的重要依据,直接关系到支付结算的准确、及时和安全。票据和结算凭证是银行、单位和个人凭以记载账务的会计凭证,是记载经济业务和明确经济责任的一种书面证明。因此,填写票据和结算凭证,必须做到标准化、规范化,要要素齐全、数字正确、字迹清晰、不错漏、不潦草,防止涂改。中文大写金额数字应用正楷或行书填写,如壹(壹)、贰(贰)、叁、肆(肆)、伍(伍)、陆(陆)、柒、捌、玖、拾、佰、仟、万(万)、亿、元、角、分、零、整(正)等字样。不得用一、二(两)、三、四、五、六、七、八、九、十、念、毛、另(或0)填写,不得自造简化字。如果金额数字书写中使用繁体字,如贰、陆、亿、万、圆的,也应受理。
一、中文大写金额数字到"元"为止的,在"元"之后,应写"整"(或"正")字,在"角"之后,可以不写"整"(或"正")字。大写金额数字有"分"的,"分"后面不写"整"(或"正")字。
二、中文大写金额数字前应标明"人民币"字样,大写金额数字有"分"的,"分"后面不写"整"(或"正")字。
三、中文大写金额数字前应标明"人民币"字样,大写金额数字应紧接"人民币"字样填写,不得留有空白。大写金额数字前未印"人民币"字样的,应加填"人民币"三字。在票据和结算凭证大写金额栏内不得预印固定的"仟、佰、拾、万、仟、佰、拾、元、角、分"字样。
四、阿拉伯数字小写金额数字中有"0"时,中文大写应按照汉语语言规律、金额数字构成和防止涂改的要求进行书写。举例如下: 1·阿拉伯数字中间有"0"时,中文大写要写"零"字,如¥1409.50,应写成人民币陆壹仟肆佰零玖元伍角。 2·阿拉伯数字中间连续有几个"0"时,中文大写金额中间可以只写一个"零"字,如¥6007.14,应写成人民币陆仟零柒元壹角肆分。 3·阿拉伯金额数字万位和元位是"0",或者数字中间连续有几个"0",万位、元位也是"0",但千位、角位不是"0"时,中文大写金额中可以只写一个零字,也可以不写"零"字。如¥1680.32,应写成人民币壹仟陆佰捌拾元零叁角贰分,或者写成人民币壹仟陆佰捌拾元叁角贰分,又如¥107000.53,应写成人民币壹拾万柒仟元零伍角叁分,或者写成人民币壹拾万零柒仟元伍角叁分。 4·阿拉伯金额数字角位是"0",而分位不是"0"时,中文大写金额"元"后面应写"零"字。如¥16409.02,应写成人民币壹万陆仟肆佰零玖元零贰分;又如¥325.04,应写成人民币叁佰贰拾伍元零肆分。
六、票据的出票日期必须使用中文大写。为防止变造票据的出票日期,在填写月、日时,月为壹、贰和壹拾的,日为壹至玖和壹拾、贰拾和叁拾的,应在其前加"零";日为拾壹至拾玖的,应在其前加"壹"。如1月15日,应写成零壹月壹拾伍日。再如10月20日,应写成零壹拾月零贰拾日。
public class MoneyForm {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(digitUppercase(14000090.23));}private static final String UNIT[] = { "万", "千", "佰", "拾", "亿", "千", "佰", "拾", "万", "千", "佰", "拾", "元", "角", "分" }; private static final String NUM[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; private static final double MAX_VALUE = 9999999999999.99D; public static String digitUppercase(double money){ if (money < 0 || money > MAX_VALUE) return "参数非法!"; long money1 = Math.round(money * 100); // 四舍五入到分 if (money1 == 0) return "零元整"; String strMoney = String.valueOf(money1); int numIndex = 0; // numIndex用于选择金额数值 int unitIndex = UNIT.length - strMoney.length(); // unitIndex用于选择金额单位 boolean isZero = false; // 用于判断当前为是否为零 String result = ""; for (; numIndex < strMoney.length(); numIndex++, unitIndex++) { char num = strMoney.charAt(numIndex); if (num == '0') { isZero = true; if (UNIT[unitIndex] == "亿" || UNIT[unitIndex] == "万" || UNIT[unitIndex] == "元") { // 如果当前位是亿、万、元,且数值为零 result = result + UNIT[unitIndex]; //补单位亿、万、元 isZero = false; } }else { if (isZero) { result = result + "零"; isZero = false; } result = result + NUM[Integer.parseInt(String.valueOf(num))] + UNIT[unitIndex]; } } //不是角分结尾就加"整"字 if (!result.endsWith("角")&&!result.endsWith("分")) { result = result + "整"; } //例如没有这行代码,数值"400000001101.2",输出就是"肆千亿万壹千壹佰零壹元贰角" result = result.replaceAll("亿万", "亿"); return result; } }
结果:
package test;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class DateTranCnDate {public DateTranCnDate() {}/** * 字符串日期转换成中文格式日期 * @param date 字符串日期 yyyy-MM-dd * @return yyyy年MM月dd日 * @throws Exception */ public static String dateToCnDate(String date) { String result = ""; String[] cnDate = new String[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"}; String ten = "拾"; String[] dateStr = date.split("-"); for (int i=0; i<dateStr.length; i++) { for (int j=0; j<dateStr[i].length(); j++) { String charStr = dateStr[i]; String str = String.valueOf(charStr.charAt(j)); if (charStr.length() == 2) {if((i==1)&&(charStr.equals("01"))){result += cnDate[0]+cnDate[1];break;}if((i==1)&&(charStr.equals("02"))){result += cnDate[0]+cnDate[2];break;}if((i==1)&&(charStr.equals("10"))){result += cnDate[0]+cnDate[1]+ten;break;}if((i==2)&&(charStr.equals("01"))){result += cnDate[0]+cnDate[1];break;}if((i==2)&&(charStr.equals("02"))){result += cnDate[0]+cnDate[2];break;}if((i==2)&&(charStr.equals("03"))){result += cnDate[0]+cnDate[3];break;}if((i==2)&&(charStr.equals("04"))){result += cnDate[0]+cnDate[4];break;}if((i==2)&&(charStr.equals("05"))){result += cnDate[0]+cnDate[5];break;}if((i==2)&&(charStr.equals("06"))){result += cnDate[0]+cnDate[6];break;}if((i==2)&&(charStr.equals("07"))){result += cnDate[0]+cnDate[7];break;}if((i==2)&&(charStr.equals("08"))){result += cnDate[0]+cnDate[8];break;}if((i==2)&&(charStr.equals("09"))){result += cnDate[0]+cnDate[9];break;}if((i==2)&&(charStr.equals("10"))){result += cnDate[0]+cnDate[1]+ten;break;}if((i==2)&&(charStr.equals("20"))){result += cnDate[0]+cnDate[2]+ten;break;}if((i==2)&&(charStr.equals("30"))){result += cnDate[0]+cnDate[3]+ten;break;}if((i==2)&&(charStr.equals("11"))){result += cnDate[1]+ten+cnDate[1];break;}if((i==2)&&(charStr.equals("12"))){result += cnDate[1]+ten+cnDate[2];break;}if((i==2)&&(charStr.equals("13"))){result += cnDate[1]+ten+cnDate[3];break;}if((i==2)&&(charStr.equals("14"))){result += cnDate[1]+ten+cnDate[4];break;}if((i==2)&&(charStr.equals("15"))){result += cnDate[1]+ten+cnDate[5];break;}if((i==2)&&(charStr.equals("16"))){result += cnDate[1]+ten+cnDate[6];break;}if((i==2)&&(charStr.equals("17"))){result += cnDate[1]+ten+cnDate[7];break;}if((i==2)&&(charStr.equals("18"))){result += cnDate[1]+ten+cnDate[8];break;}if((i==2)&&(charStr.equals("19"))){result += cnDate[1]+ten+cnDate[9];break;}if (charStr.equals("10")) { result += ten; break; } else { if (j == 0) { if (charStr.charAt(j) == '1') result += ten; else if (charStr.charAt(j) == '0') result += ""; else result += cnDate[Integer.parseInt(str)] + ten; } if (j == 1) { if (charStr.charAt(j) == '0') result += ""; else result += cnDate[Integer.parseInt(str)]; } } } else { result += cnDate[Integer.parseInt(str)]; } } if (i == 0) { result += "年"; continue; } if (i == 1) { result += "月"; continue; } if (i == 2) { result += "日"; continue; } } return result; } public static void main(String[] args) throws ParseException {SimpleDateFormat sdf= new SimpleDateFormat("yyyyMMdd");SimpleDateFormat sdf1= new SimpleDateFormat("yyyy-MM-dd");String dete = dateToCnDate(sdf1.format(sdf.parse("20150702")));System.out.println(dete);}
}
结果如下:
金额转大写及日期转大写(java)相关推荐
- JavaScript票据出票日期中文大写填写规范
说明: 本程序用JavaScript语言编写.转换方法遵照中国人民银行关于银行支票中票据出票日期的中文大写填写规范的相关规定. 中国人民银行规定的银行支票中关于中文大写填写规范的相关规定: 1.财政部 ...
- python使用正则表达式识别大写字母并在大写字母前插入空格
python使用正则表达式识别大写字母并在大写字母前插入空格 #python使用正则表达式识别大写字母并在大写字母前插入空格 import redef putSpace(input):# regex ...
- 自定义日期工具类 java 1614698552
自定义日期工具类 java 1614698552 需求 思路 演练 日期转字符串的方法 字符串转日期方法 测试类 更多尝试 测试另一个方法
- 日期的包装 java,Java基础之Java常用类--Object类,字符串相关类,包装类,日期相关类,数字相关类...
Java是一种面向对象的语言,也就是将万事万物可以描述为对象,特点如下: 1.面向对象是常见的一种思考习惯,符合人们的思考习惯. 2.面向对象的出现,将复杂的事情简单化. 3.面向对象的出现,将之前过 ...
- PySide6中QlineEdit设置自动所有字母大写以及首字母大写的案例
pyside6中qlineEdit设置自动所有字母大写以及首字母大写的案例,方便以后查阅. import sys from PySide6.QtWidgets import *class qlinEd ...
- 练习2-4:调整名字的大小写 用变量表示一个人的名字,再以小写、大写和首字母大写的方式显示这个人名
"""练习2-4:调整名字的大小写 用变量表示一个人的名字,再以小写.大写和首字母大写的方式显示这个人名. """name="lu ...
- es查询时间long转date_es 日期范围查询(java)
es 建立表的时候要将类型设置为 date,也就是设置 mapping PUT jtthink { "mappings": { "ipaddr": { &quo ...
- Java的日期与时间java.time.Duration的简介说明
转自: Java的日期与时间java.time.Duration的简介说明 下文笔者讲述Duration类的简介说明,如下所示 Duration类简介 Duration对象:表示两个Instant间的 ...
- oracle日期格式和java日期格式区别 HH24:mm:ss和HH24:mi:ss的区别
oracle日期格式和java日期格式区别 HH24:mm:ss和HH24:mi:ss的区别 1.java 1)分钟用mm表示 24小时制: java(区分大小写):yyyy-MM-dd HH:mm: ...
最新文章
- 网站哪些细节做不好会导致网站的跳出率过高?
- IDEA---Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found
- 第九届河南理工大学算法程序设计大赛 正式赛(ABCDEFGHJKL)
- 活动目录网域中禁用移动存储(U盘)
- 【目标检测_解耦】 Revisiting the Sibling Head in Object Detector_2020
- 洛谷P6302:回家路线(斜率优化)
- java中自定义异常的_java中的自定义异常(标准)
- 图文并茂带你了解依存句法分析
- canvas arc() 方法绘制弧线、曲线、圆形,rect() 绘制矩形
- vc服务器的作用,总结虚拟化服务器的好处
- 迈信EP100伺服驱动器量产型修改bug全套C源代码和硬件
- linux系统 浏览器安装包下载,Linux版360浏览器安装包非常大的原因
- PE文件偏移地址分析
- 微信小程序自动定位当前位置
- html用超链接将网页组织在一起,Javaweb-html
- Android闪退原因
- Android 讯飞离线语音听写/离线语音识别SDK
- 3月9日—3月12日三年级课程
- 高校计算机教师年度考核,教师年度考核个人总结范文
- 物料管理系统最基本的功能有哪些?