publicstaticBigDecimalgetBigDecimal(Object value ){BigDecimal ret =null;if( value !=null){if( value instanceofBigDecimal){
ret =(BigDecimal) value;}elseif( value instanceofString){
ret =newBigDecimal((String) value );}elseif( value instanceofBigInteger){
ret =newBigDecimal((BigInteger) value );}elseif( value instanceofNumber){
ret =newBigDecimal(((Number)value).doubleValue());}else{thrownewClassCastException("Not possible to coerce ["+value+"] from class "+value.getClass()+" into a BigDecimal.");}}return ret;}
四、获取时间段内的所有时间集合
publicclassTimeChange{publicstaticList<String>getMonthBetween(String minDate,String maxDate)throwsParseException{ArrayList<String> result =newArrayList<String>();SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM");//格式化为年月Calendar min =Calendar.getInstance();Calendar max =Calendar.getInstance();
min.setTime(sdf.parse(minDate));
min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH),1);
max.setTime(sdf.parse(maxDate));
max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH),2);// result.add(minDate);Calendar curr = min;while(curr.before(max)){
result.add(sdf.format(curr.getTime()));
curr.add(Calendar.MONTH,1);}// result.add(maxDate);return result;}publicstaticStringincreaseTime(String str)throwsParseException{SimpleDateFormat ss =newSimpleDateFormat("yyyy-MM");Date date = ss.parse(str);Calendar calendar =Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH,1);String finalDate = ss.format(calendar.getTime());return finalDate;}publicstaticStringdecreaseTime(String str)throwsParseException{SimpleDateFormat ss =newSimpleDateFormat("yyyy-MM");Date date = ss.parse(str);Calendar calendar =Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH,-1);String finalDate = ss.format(calendar.getTime());return finalDate;}publicstaticStringincreaseYear(String str)throwsParseException{SimpleDateFormat ss =newSimpleDateFormat("yyyy");Date date = ss.parse(str);Calendar calendar =Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.YEAR,1);String finalDate = ss.format(calendar.getTime());return finalDate;}publicstaticList<String>getBetweenDate(String startTime,String endTime){SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd");// 声明保存日期集合List<String> list =newArrayList<String>();try{// 转化成日期类型Date startDate = sdf.parse(startTime);Date endDate = sdf.parse(endTime);//用Calendar 进行日期比较判断Calendar calendar =Calendar.getInstance();while(startDate.getTime()<=endDate.getTime()){// 把日期添加到集合
list.add(sdf.format(startDate));// 设置日期
calendar.setTime(startDate);//把日期增加一天
calendar.add(Calendar.DATE,1);// 获取增加后的日期
startDate=calendar.getTime();}}catch(ParseException e){
e.printStackTrace();}return list;}publicstaticList<String>getMonth(String year){List list =newArrayList();for(int i=1;i<=12;i++){if(i<10){
list.add(year+"-0"+i);}else{
list.add(year+"-"+i);}}return list;}publicstaticList<String>getYear(String minDate,String maxDate){ArrayList<String> result =newArrayList<String>();Integer startTime =Integer.parseInt(minDate);Integer endTime =Integer.parseInt(maxDate);while(startTime <= endTime){
result.add(startTime+"");
startTime++;}return result;}}
五、计算两个字符串相似度
publicclassMyLevenshtein{publicstaticvoidmain(String[] args){//要比较的两个字符串 String str1 ="今天星期四";String str2 ="今天是星期五";levenshtein(str1,str2);}publicstaticvoidlevenshtein(String str1,String str2){//计算两个字符串的长度。 int len1 = str1.length();int len2 = str2.length();//建立上面说的数组,比字符长度大一个空间 int[][] dif =newint[len1 +1][len2 +1];//赋初值,步骤B。 for(int a =0; a <= len1; a++){
dif[a][0]= a;}for(int a =0; a <= len2; a++){
dif[0][a]= a;}//计算两个字符是否一样,计算左上的值 int temp;for(int i =1; i <= len1; i++){for(int j =1; j <= len2; j++){if(str1.charAt(i -1)== str2.charAt(j -1)){
temp =0;}else{
temp =1;}//取三个值中最小的
dif[i][j]=min(dif[i -1][j -1]+ temp, dif[i][j -1]+1,
dif[i -1][j]+1);}}System.out.println("字符串\""+str1+"\"与\""+str2+"\"的比较");//取数组右下角的值,同样不同位置代表不同字符串的比较 System.out.println("差异步骤:"+dif[len1][len2]);//计算相似度 float similarity =1-(float) dif[len1][len2]/Math.max(str1.length(), str2.length());System.out.println("相似度:"+similarity);}//得到最小值 privatestaticintmin(int... is){int min =Integer.MAX_VALUE;for(int i : is){if(min > i){
min = i;}}return min;}}