当前位置 : 主页 > 编程语言 > c++ >

中文日期转为数字类型日期

来源:互联网 收集:自由互联 发布时间:2021-06-30
中文日期转为数字类型日期 public static String timeConvert(String time) {String strTime = time.replaceAll("上午", "").replaceAll("下午", "");// 整点if (!strTime.contains("时")) {// 1~9时if (!strTime.contains("十")) {retu
中文日期转为数字类型日期
public static String timeConvert(String time) {
		String strTime = time.replaceAll("上午", "").replaceAll("下午", "");

		// 整点
		if (!strTime.contains("时")) {
			// 1~9时
			if (!strTime.contains("十")) {
				return "0" + ConvertCnNumberChar(strTime) + ":00";
			} else if ("十".equals(strTime)) {
				return "10:00";
			} else {
				// 11~19时
				String tm = strTime.substring(1);
				return "1" + ConvertCnNumberChar(tm) + ":00";
			}
		} else {
			String hour = "";
			String min = "";
			// 拆分“时”、“分”
			String s = strTime.replaceAll("时", " ");
			String[] ss = s.split("\\s+");

			// 处理小时
			// 1~9时
			if (!ss[0].contains("十")) {
				hour = "0" + ConvertCnNumberChar(ss[0]);
			} else if ("十".equals(ss[0])) {
				hour = "10";
			} else {
				// 11~19时
				String tm = ss[0].substring(1);
				hour = "1" + ConvertCnNumberChar(tm);
			}

			// 处理分钟
			if ("十".equals(ss[1].replace("分", ""))) {
				min = "10";
			} else if (ss[1].replace("分", "").length() == 1) {
				// 一位数
				min = "0" + ConvertCnNumberChar(ss[1]);
			} else if (ss[1].replace("分", "").length() == 3) {
				// 三位数
				min = ConvertCnNumberChar(ss[1].replace("分", "").replaceAll("十", ""));
			} else {
				// 两位数
				if ("二十".equals(ss[1].replace("分", "")) || "三十".equals(ss[1].replace("分", ""))
						|| "四十".equals(ss[1].replace("分", "")) || "五十".equals(ss[1].replace("分", ""))) {
					min = ConvertCnNumberChar(ss[1].replace("分", "").replaceAll("十", "")) + "0";
				} else {
					min = ConvertCnNumberChar(ss[1].replace("分", "").replaceAll("十", "1"));
				}
			}
			return hour + ":" + min;
		}

	}

	private static String ConvertCnNumberChar(String cnNumberStr) {
		String ALL_CN_NUMBER = "〇○零一二三四五六七八九";
		String ALL_NUMBER = "000123456789";
		StringBuffer buf = new StringBuffer();
		for (int i = 0; i < cnNumberStr.length(); i++) {
			char c = cnNumberStr.charAt(i);
			int index = ALL_CN_NUMBER.indexOf(c);
			if (index != -1) {
				buf.append(ALL_NUMBER.charAt(index));
			} else {
				buf.append(cnNumberStr.charAt(i));
			}
		}
		return buf.toString();
	}
网友评论