//大家有什么好的建议可以提哦
//直接上代码
package com.jd.jnlu.core.utils;
import com.google.common.collect.Maps;
import com.jd.jsf.gd.util.StringUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class DateUtil {
private static final Map<Character, Character> NUM_MAPPER;
private static Pattern pattern = Pattern.compile("(\\d{1,2}小?时)*零?(\\d{1,2}分钟?)*零?(\\d{1,2}秒钟?)*");
private static Pattern hourPattern = Pattern.compile("(\\d{1,2})小?时");
private static Pattern minutePattern = Pattern.compile("(\\d{1,2})分钟?");
private static Pattern secondPattern = Pattern.compile("(\\d{1,2})秒钟?");
static {
NUM_MAPPER = Maps.newHashMap();
NUM_MAPPER.put('零', '0');
NUM_MAPPER.put('一', '1');
NUM_MAPPER.put('二', '2');
NUM_MAPPER.put('两', '2');
NUM_MAPPER.put('三', '3');
NUM_MAPPER.put('四', '4');
NUM_MAPPER.put('五', '5');
NUM_MAPPER.put('六', '6');
NUM_MAPPER.put('七', '7');
NUM_MAPPER.put('八', '8');
NUM_MAPPER.put('九', '9');
}
//2017/11/01 00::00:00-2017/11/11 23:59:59
public static boolean checkTimeLimit(String dateLimit) {
if (StringUtils.isNotBlank(dateLimit)) {
String[] dateData = dateLimit.split("-");
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
if (dateData.length < 2) return false;
String current = format.format(new Date());
if (current.compareTo(dateData[0]) >= 0 && current.compareTo(dateData[1]) <= 0) {
return true;
}
}
return false;
}
public static long convertTimeString(String timeString) {
timeString = timeString.replaceAll(" ", "");
timeString = NumberConverter.convertNumbers(timeString);
StringBuilder stringBuilder = new StringBuilder("");
for (char ch : timeString.toCharArray()) {
Character digit = NUM_MAPPER.get(ch);
if (digit != null) {
stringBuilder.append(digit);
} else if ('十' == ch) {//special case, do not add it into NUM_MAPPER;
stringBuilder.append("10");
} else {
stringBuilder.append(ch);
}
}
timeString = stringBuilder.toString();
Matcher matcher = pattern.matcher(timeString);
long result = 0;
if (matcher.find()) {
String hourString = matcher.group(1);
String minuteString = matcher.group(2);
String secondString = matcher.group(3);
if (hourString != null) {
matcher = hourPattern.matcher(hourString);
if (matcher.find()) {
int hour = Integer.parseInt(matcher.group(1));
result += hour * 3600;
}
}
if (minuteString != null) {
matcher = minutePattern.matcher(minuteString);
if (matcher.find()) {
int minute = Integer.parseInt(matcher.group(1));
result += minute * 60;
}
}
if (secondString != null) {
matcher = secondPattern.matcher(secondString);
if (matcher.find()) {
int second = Integer.parseInt(matcher.group(1));
result += second;
}
}
}
return result;
}
}