Java的各种工具类

  下面是java的各种工具,包括获取时间和时间比较,检验集合和字符串是否为空和长度大小等等   1 import java.io.BufferedReader;
   2 import java.io.File;
   3 import java.io.OutputStream;
   4 import java.io.Reader;
   5 import java.io.UnsupportedEncodingException;
   6 import java.math.BigDecimal;
   7 import java.text.DateFormat;
   8 import java.text.DecimalFormat;
   9 import java.text.ParseException;
  10 import java.text.SimpleDateFormat;
  11 import java.util.ArrayList;
  12 import java.util.Calendar;
  13 import java.util.Collection;
  14 import java.util.Date;
  15 import java.util.GregorianCalendar;
  16 import java.util.List;
  17 import java.util.Map;
  18
  19 import jxl.Workbook;
  20 import jxl.write.Label;
  21 import jxl.write.WritableCellFormat;
  22 import jxl.write.WritableFont;
  23 import jxl.write.WritableSheet;
  24 import jxl.write.WritableWorkbook;
  25
  26 import org.apache.commons.io.FilenameUtils;
  27 import org.apache.commons.lang.CharUtils;
  28 import org.apache.commons.lang.StringUtils;
  29 import org.apache.commons.lang.time.DateFormatUtils;
  30 import org.apache.commons.validator.GenericValidator;
  31
  32 import sun.misc.BASE64Decoder;
  33
  34 import com.xmld.server.constant.GeneralConstant;
  35 import com.xmld.server.exception.ServiceException;
  36
  37 /**
  38  * 通用的工具类
  39  */
  40 public final class GeneralUtils
  41 {
  42
  43     private GeneralUtils()
  44     {
  45
  46     }
  47
  48     /**
  49      * 判断对象是否为null , 为null返回true,否则返回false
  50      * @param obj 被判断的对象
  51      * @return boolean
  52      */
  53     public static boolean isNull(Object obj)
  54     {
  55         return (null == obj) ? true : false;
  56     }
  57
  58     /**
  59      * 判断对象是否为null , 为null返回false,否则返回true
  60      *
  61      * @param obj 被判断的对象
  62      * @return boolean
  63      */
  64     public static boolean isNotNull(Object obj)
  65     {
  66         return !isNull(obj);
  67     }
  68
  69     /**
  70      * 判断字符串是否为null或者0长度,字符串在判断长度时,先去除前后的空格,空或者0长度返回true,否则返回false
  71      *
  72      * @param str 被判断的字符串
  73
  74      * @return boolean
  75      */
  76     public static boolean isNullOrZeroLenght(String str)
  77     {
  78         return GenericValidator.isBlankOrNull(str);
  79     }
  80
  81     /**
  82      * 判断字符串是否为null或者0长度,字符串在判断长度时,先去除前后的空格,空或者0长度返回false,否则返回true
  83      *
  84      * @param str 被判断的字符串
  85
  86      * @return boolean
  87      */
  88     public static boolean isNotNullOrZeroLenght(String str)
  89     {
  90         return !isNullOrZeroLenght(str);
  91     }
  92
  93     /**
  94      * 判断str数组是否为null或者0长度,只要有一个空或者0长度返回false, 否则返回true
  95      *
  96      * @param str String 字符数组
  97      * @return boolean
  98      * @author huanghui
  99      * @see [类、类#方法、类#成员]
 100      */
 101     public static boolean isNotNullOrZeroLenght(String... str)
 102     {
 103         for (String s : str)
 104         {
 105             if (isNullOrZeroLenght(s))
 106             {
 107                 return false;
 108             }
 109         }
 110         return true;
 111     }
 112
 113     /**
 114      * 判断str数组是否为null或者0长度,只要有一个空或者0长度返回true, 否则返回false
 115      *
 116      * @param str String 字符数组
 117      * @return boolean
 118      * @author huanghui
 119      * @see [类、类#方法、类#成员]
 120      */
 121     public static boolean isNullOrZeroLenght(String... str)
 122     {
 123         return !isNotNullOrZeroLenght(str);
 124     }
 125
 126     /**
 127      * 判断集合对象是否为null或者0大小 , 为空或0大小返回true ,否则返回false
 128      *
 129      * @param c collection 集合接口
 130      * @return boolean 布尔值
 131
 132      * @author huanghui
 133      * @see [类、类#方法、类#成员]
 134      */
 135     public static boolean isNullOrZeroSize(Collection<? extends Object> c)
 136     {
 137         return isNull(c) || c.isEmpty();
 138     }
 139
 140     /**
 141      * 判断集合对象是否为null或者0大小 , 为空或0大小返回false, 否则返回true
 142      *
 143      * @param c collection 集合接口
 144      * @return boolean 布尔值
 145
 146      * @author huanghui
 147      * @see [类、类#方法、类#成员]
 148      */
 149     public static boolean isNotNullOrZeroSize(Collection<? extends Object> c)
 150     {
 151         return !isNullOrZeroSize(c);
 152     }
 153
 154     /**
 155      * 判断数字类型是否为null或者0,如果是返回true,否则返回false
 156      *
 157      * @param number 被判断的数字
 158      * @return boolean
 159      */
 160     public static boolean isNullOrZero(Number number)
 161     {
 162         if (GeneralUtils.isNotNull(number))
 163         {
 164             return (number.doubleValue() != 0) ? false : true;
 165         }
 166         return true;
 167     }
 168
 169     /**
 170      * 判断数字类型是否不为null或者0,如果是返回true,否则返回false
 171      *
 172      * @param number 被判断的数字
 173      * @return boolean
 174      */
 175     public static boolean isNotNullOrZero(Number number)
 176     {
 177         return !isNullOrZero(number);
 178     }
 179
 180     /**
 181      * 将java.util.Date类型转化位String类型
 182      *
 183      * @param date 要转换的时间
 184      * @param format 时间格式
 185      * @return 如果转换成功,返回指定格式字符串,如果转换失败,返回null
 186      */
 187     public static String date2String(Date date, String format)
 188     {
 189         if (GeneralUtils.isNull(date) || GeneralUtils.isNull(format))
 190         {
 191             return null;
 192         }
 193
 194         return DateFormatUtils.format(date, format);
 195     }
 196
 197     /**
 198      * 将字符串时间转换成java.util.Date类型
 199      * @param str 要转换的字符串
 200      * @param format 时间格式
 201      * @return 如果转换失败,返回null
 202      */
 203     public static Date string2Date(String str, String format)
 204     {
 205         if (GeneralUtils.isNull(str) || GeneralUtils.isNull(format))
 206         {
 207             return null;
 208         }
 209
 210         // 定义日期/时间格式
 211         SimpleDateFormat sdf = new SimpleDateFormat(format);
 212         Date date;
 213
 214         try
 215         {
 216             // 转换日期/时间格式
 217             date = sdf.parse(str);
 218             // 判断转换前后时间是否一致
 219
 220             if (!str.equals(sdf.format(date)))
 221             {
 222                 date = null;
 223             }
 224         }
 225         catch (ParseException e)
 226         {
 227             date = null;
 228         }
 229
 230         return date;
 231     }
 232
 233     /**
 234      * 将字符串时间转换时间格式
 235      * @param str 要转换的字符串
 236      * @param formatF 初始时间格式
 237      * @param formatT 目标时间格式
 238      * @return 如果转换失败,返回null
 239      */
 240     public static String String2String(String str, String formatF, String formatT)
 241     {
 242         return date2String(string2Date(str, formatF), formatT);
 243     }
 244
 245     /**
 246      * 验证日期/时间格式
 247      * @param dateStr 待验证的字符串
 248      * @param format 类型
 249      * @return 是返回ture,否则返回false
 250      */
 251     public static boolean isDateTime(String dateStr, String format)
 252     {
 253         return GenericValidator.isDate(dateStr, format, true);
 254     }
 255
 256     /**
 257      * 判断字符串长度,范围包含min和max的值
 258
 259      *
 260      * @param str String
 261      * @param min 最小范围
 262
 263      * @param max 最大范围
 264
 265      * @return boolean
 266      */
 267     public static boolean isInRange(String str, int min, int max)
 268     {
 269         if (GeneralUtils.isNull(str))
 270         {
 271             return false;
 272         }
 273
 274         try
 275         {
 276             int len = str.trim().getBytes(GeneralConstant.CHARACTER_CODING).length;
 277             return GenericValidator.isInRange(len, min, max);
 278         }
 279         catch (UnsupportedEncodingException e)
 280         {
 281             return false;
 282         }
 283     }
 284
 285
 286     /**
 287      * 判断字符串是否超过最大长度
 288
 289      * @param str String
 290      * @param max 最大长度
 291
 292      * @return boolean
 293      */
 294     public static boolean maxLength(String str, int max)
 295     {
 296         return isInRange(str, 0, max);
 297     }
 298
 299     /**
 300      * 判断字符串是否低于最小长度
 301
 302      * @param str String
 303      * @param min 最小长度
 304
 305      * @return boolean
 306      */
 307     public static boolean minLength(String str, int min)
 308     {
 309         return isInRange(str, min, Integer.MAX_VALUE);
 310     }
 311
 312     /**
 313      * 获取目录在系统中的绝对路径
 314      * @param path 路径
 315      * @return Sting
 316      */
 317     public static String getAbsolutePath(String path)
 318     {
 319         // 如果路进为null,则认为时当前目录
 320
 321         path = (GeneralUtils.isNull(path)) ? "" : path;
 322         File file = new File(path);
 323
 324         // 获取完整路径
 325         return FilenameUtils.separatorsToUnix(file.getAbsolutePath());
 326     }
 327
 328     /**
 329      * 将字符串首字符待大写
 330      * @param str 源字符串
 331      * @return 首字符大写后的字符串
 332      * @see [类、类#方法、类#成员]
 333      */
 334     public static String firstCharUpper(String str)
 335     {
 336         char firstChar = CharUtils.toChar(str);
 337         String upFirstChar = StringUtils.upperCase(String.valueOf(firstChar));
 338         return StringUtils.replaceOnce(str, String.valueOf(firstChar), upFirstChar);
 339     }
 340
 341     /**
 342      * Object - > String
 343      * @param obj  对象参数
 344      * @return  String 字符串
 345      */
 346     public static String object2String(Object obj)
 347     {
 348         if (isNull(obj))
 349         {
 350             return "";
 351         }
 352         else
 353         {
 354             return obj.toString();
 355         }
 356     }
 357
 358     /**
 359      * 返回当前的时间戳
 360      * @return 时间戳
 361      */
 362     public static String getCurrentTimeStamp()
 363     {
 364         return Long.toString(System.currentTimeMillis() / 1000);
 365     }
 366
 367     /**
 368      * 返回当前时间戳
 369      * @param pattern 默认为:yyyyMMddHHmmss
 370      * @return string  时间字符串
 371      */
 372     public static String getCurrentTimeStamp(String pattern)
 373     {
 374         if (isNullOrZeroLenght(pattern))
 375         {
 376             pattern = GeneralConstant.DATETIME_14;
 377         }
 378         Date date = new Date(System.currentTimeMillis());
 379         return date2String(date, pattern);
 380     }
 381
 382     /**
 383      * 返回昨天的日期
 384      * @param pattern
 385      * @return
 386      */
 387     public static String getNextDay(String pattern) {
 388         if (isNullOrZeroLenght(pattern))
 389         {
 390             pattern = GeneralConstant.DATETIME_14;
 391         }
 392         Calendar calendar = Calendar.getInstance();
 393         Date dNow = new Date();
 394         calendar.setTime(dNow);
 395         calendar.add(Calendar.DAY_OF_MONTH, -1);
 396         dNow = calendar.getTime();
 397         return date2String(dNow, pattern);
 398     }
 399     /**
 400      * 返回当前时间戳
 401      * @return 17位时间戳表示
 402      */
 403     public static String getCurrentTimeStamp17Bit()
 404     {
 405         Date date = new Date(System.currentTimeMillis());
 406         return date2String(date, GeneralConstant.DATETIME_17);
 407     }
 408
 409     /**
 410      * 返回当前时间戳
 411      * @return 12位时间戳表示
 412      */
 413     public static String getCurrentTimeStamp12Bit()
 414     {
 415         Date date = new Date(System.currentTimeMillis());
 416         return date2String(date, GeneralConstant.DATETIME_12_A);
 417     }
 418
 419     /**
 420      * 根据格式和间隔时间返回系统当前日期N天前或者N天后的日期
 421      * @param pattan 格式化时间
 422      * @param days 间隔时间 正数代表之后的日期,负数代表之前的日期
 423      * @return
 424      * @see [类、类#方法、类#成员]
 425      */
 426     public static String getNSystemTime(String pattan, int days)
 427     {
 428         GregorianCalendar currentDate = new GregorianCalendar();
 429         currentDate.add(GregorianCalendar.DATE, days);
 430         Date date = currentDate.getTime();
 431         SimpleDateFormat df = new SimpleDateFormat(pattan);
 432         String preDay = df.format(date);
 433         return preDay;
 434     }
 435
 436     /**
 437      * 根据格式化字符获取时间
 438      * @param dateStr 字符串时间
 439      * @param pattern 格式化方式
 440      * @return Date Date
 441      */
 442     public static Date getDate(String dateStr, String pattern)
 443     {
 444         Date date = null;
 445         try
 446         {
 447             date = new SimpleDateFormat(pattern).parse(dateStr);
 448         }
 449         catch (ParseException e)
 450         {
 451             return null;
 452         }
 453         return date;
 454     }
 455
 456     /**
 457      * 拼装文件路径
 458      * @param basePath 文件路径
 459      * @param fullFilenameToAdd 文件名或带部分路径的文件名
 460      * @return 返回处理后的字符串
 461      */
 462     public static String filePathConcat(String basePath, String fullFilenameToAdd)
 463     {
 464         String path1 = FilenameUtils.separatorsToUnix(GeneralUtils.isNull(basePath) ? "" : basePath);
 465         String path2 = FilenameUtils.separatorsToUnix(GeneralUtils.isNull(fullFilenameToAdd) ? "" : fullFilenameToAdd);
 466
 467         if (GeneralUtils.isNullOrZeroLenght(path1))
 468         {
 469             return path2;
 470         }
 471
 472         if ((path1.length() - 1) == StringUtils.lastIndexOf(path1, GeneralConstant.SEPARATOR))
 473         {
 474             path1 = StringUtils.substring(path1, 0, path1.length() - 1);
 475         }
 476
 477         if (0 == StringUtils.indexOf(path2, GeneralConstant.SEPARATOR))
 478         {
 479             path2 = StringUtils.substring(path2, 1);
 480         }
 481
 482         return path1 + GeneralConstant.SEPARATOR + path2;
 483
 484     }
 485
 486     /**
 487      * 删除文件
 488      * @param filePathname 文件路径
 489      * @throws ServiceException 业务异常
 490      */
 491     public static void deleteFile(String filePathname)
 492         throws ServiceException
 493     {
 494         // 如果路径为空或空字符串,直接返回不做处理
 495         if (isNullOrZeroLenght(filePathname))
 496         {
 497             return;
 498         }
 499
 500         // 定义删除的文件
 501
 502         File fileObject = new File(filePathname);
 503
 504         // 如果文件不存在,直接返回
 505         if (!fileObject.exists() || !fileObject.isFile())
 506         {
 507             return;
 508         }
 509
 510         // 如果删除文件失败,则抛出异常
 511         if (!fileObject.delete())
 512         {
 513             throw new ServiceException("");
 514         }
 515     }
 516
 517     /**
 518      * 将以特定字符作为分隔符的字符串转换为Set集合
 519      * @param strToBeConverted - 待转换的字符串
 520      * @param separator - 分隔符
 521      * @return - 转换后的列表对象
 522      */
 523     public static List<String> splitStringUseSpecifiedSeparator(String strToBeConverted, String separator)
 524     {
 525         // 转换后集合对象,初始设置为空。
 526
 527         List<String> resultList = new ArrayList<String>();
 528
 529         // 原始字符串为NULL或者为空,直接返回空Set
 530         if (StringUtils.isEmpty(strToBeConverted))
 531         {
 532             return resultList;
 533         }
 534
 535         // 分隔符为NUlL或者空,返回只包含原始字符串的Set
 536         if (StringUtils.isEmpty(separator))
 537         {
 538             resultList.add(strToBeConverted);
 539         }
 540
 541         // 按照指定分隔符拆分字符串
 542         String[] arrayString = strToBeConverted.split(separator);
 543
 544         // 遍历数组,组装到Set集合中。方便调用程序处理。
 545
 546         for (String str : arrayString)
 547         {
 548             resultList.add(str);
 549         }
 550
 551         return resultList;
 552     }
 553
 554     /**
 555      * 生成EXCEL
 556      * @param filePath 文件路径
 557      * @param xlContents 需要生成的内容
 558      * @param cellConfig 配置
 559      * @see [类、类#方法、类#成员]
 560      */
 561     public static void createExcel(String filePath, List<Object> xlContents, int[] cellConfig)
 562     {
 563         //        String targetDirectory = ServletActionContext.getServletContext().getRealPath(filePath);
 564         File f = new File(filePath);
 565         int[] widthConfig = new int[cellConfig.length];
 566         int widthTemp = 0;
 567
 568         try
 569         {
 570             WritableWorkbook book = Workbook.createWorkbook(f);
 571             WritableSheet sheet = book.createSheet("sheet", 0);
 572             //            //保护
 573             //            sheet.getSettings().setProtected(true);
 574             //            //保护密码
 575             //            sheet.getSettings().setPassword("xmld");
 576             //冻结标题
 577             sheet.getSettings().setVerticalFreeze(1);
 578
 579             for (int i = 0; i < xlContents.size(); i++)
 580             {
 581                 Object iContents = xlContents.get(i);
 582
 583                 if (iContents instanceof String[])
 584                 {
 585                     for (int j = 0; j < ((String[])iContents).length; j++)
 586                     {
 587                         WritableCellFormat wcf = new WritableCellFormat();
 588                         wcf.setAlignment(jxl.format.Alignment.CENTRE);
 589
 590                         Label label = new Label(j, i, ((String[])iContents)[j], wcf);
 591                         sheet.addCell(label);
 592
 593                         widthTemp = String.valueOf(((String[])iContents)[j]).getBytes("GBK").length + 1;
 594                         if (widthTemp > widthConfig[j])
 595                         {
 596                             widthConfig[j] = widthTemp;
 597                         }
 598                     }
 599                 }
 600                 else
 601                 {
 602                     for (int j = 0; j < ((List<?>)iContents).size(); j++)
 603                     {
 604                         Object obj = ((List<?>)iContents).get(j);
 605
 606                         WritableCellFormat wcf = new WritableCellFormat();
 607                         if (cellConfig[j] == 1)
 608                         {
 609                             wcf.setLocked(true);
 610                         }
 611                         else
 612                         {
 613                             wcf.setLocked(false);
 614                         }
 615
 616                         if (obj instanceof Double)
 617                         {
 618                             jxl.write.Number number = new jxl.write.Number(j, i, (Double)obj, wcf);
 619                             sheet.addCell(number);
 620
 621                             widthTemp = String.valueOf(obj).getBytes("GBK").length + 1;
 622                             if (widthTemp > widthConfig[j])
 623                             {
 624                                 widthConfig[j] = widthTemp;
 625                             }
 626                         }
 627                         else if (obj instanceof Integer)
 628                         {
 629                             jxl.write.Number number = new jxl.write.Number(j, i, (Integer)obj, wcf);
 630                             sheet.addCell(number);
 631
 632                             widthTemp = String.valueOf(obj).getBytes("GBK").length + 1;
 633                             if (widthTemp > widthConfig[j])
 634                             {
 635                                 widthConfig[j] = widthTemp;
 636                             }
 637                         }
 638                         else if (obj instanceof Long)
 639                         {
 640                             jxl.write.Number number = new jxl.write.Number(j, i, (Long)obj, wcf);
 641                             sheet.addCell(number);
 642
 643                             widthTemp = String.valueOf(obj).getBytes("GBK").length + 1;
 644                             if (widthTemp > widthConfig[j])
 645                             {
 646                                 widthConfig[j] = widthTemp;
 647                             }
 648                         }
 649                         else
 650                         {
 651                             Label label = new Label(j, i, (String)obj, wcf);
 652                             sheet.addCell(label);
 653
 654                             widthTemp = String.valueOf(obj).getBytes("GBK").length + 1;
 655                             if (widthTemp > widthConfig[j])
 656                             {
 657                                 widthConfig[j] = widthTemp;
 658                             }
 659                         }
 660                     }
 661                 }
 662             }
 663             for (int i = 0; i < widthConfig.length; i++)
 664             {
 665                 sheet.setColumnView(i, widthConfig[i]);
 666                 //System.out.println(widthConfig[i]);
 667             }
 668
 669             book.write();
 670             book.close();
 671         }
 672         catch (Exception e)
 673         {
 674             e.printStackTrace();
 675         }
 676     }
 677
 678     /**
 679      *
 680      * 生成Excel
 681      * 同时写入os中
 682      * @param os
 683      * @param xlContents 需要生成的内容
 684      * @param cellConfig 配置
 685      * @param totalMoney 总计
 686      * @param param   备份参数
 687      * @see [类、类#方法、类#成员]
 688      */
 689     public static void createExcelAndRet0utDataStream(OutputStream os, List<Object> xlContents, int[] cellConfig,
 690         Double totalMoney, String param)
 691     {
 692
 693         int[] widthConfig = new int[cellConfig.length];
 694         int widthTemp = 0;
 695         try
 696         {
 697             WritableWorkbook book = Workbook.createWorkbook(os);
 698             WritableSheet sheet = book.createSheet("sheet", 0);
 699             //保护
 700             sheet.getSettings().setProtected(true);
 701             //保护密码
 702             sheet.getSettings().setPassword("linkage");
 703             //冻结标题
 704             sheet.getSettings().setVerticalFreeze(1);
 705
 706             for (int i = 0; i < xlContents.size(); i++)
 707             {
 708                 Object iContents = xlContents.get(i);
 709
 710                 if (iContents instanceof String[])
 711                 {
 712                     for (int j = 0; j < ((String[])iContents).length; j++)
 713                     {
 714                         WritableCellFormat wcf = new WritableCellFormat();
 715                         wcf.setAlignment(jxl.format.Alignment.CENTRE);
 716
 717                         Label label = new Label(j, i, ((String[])iContents)[j], wcf);
 718                         sheet.addCell(label);
 719
 720                         widthTemp = String.valueOf(((String[])iContents)[j]).getBytes("GBK").length + 1;
 721                         if (widthTemp > widthConfig[j])
 722                         {
 723                             widthConfig[j] = widthTemp;
 724                         }
 725                     }
 726                 }
 727                 else
 728                 {
 729                     for (int j = 0; j < ((List<?>)iContents).size(); j++)
 730                     {
 731                         Object obj = ((List<?>)iContents).get(j);
 732
 733                         WritableCellFormat wcf = new WritableCellFormat();
 734                         if (cellConfig[j] == 1)
 735                         {
 736                             wcf.setLocked(true);
 737                         }
 738                         else
 739                         {
 740                             wcf.setLocked(false);
 741                         }
 742
 743                         if (obj instanceof Double)
 744                         {
 745                             jxl.write.Number number = new jxl.write.Number(j, i, (Double)obj, wcf);
 746                             sheet.addCell(number);
 747
 748                             widthTemp = String.valueOf(obj).getBytes("GBK").length + 1;
 749                             if (widthTemp > widthConfig[j])
 750                             {
 751                                 widthConfig[j] = widthTemp;
 752                             }
 753                         }
 754                         else if (obj instanceof Integer)
 755                         {
 756                             jxl.write.Number number = new jxl.write.Number(j, i, (Integer)obj, wcf);
 757                             sheet.addCell(number);
 758
 759                             widthTemp = String.valueOf(obj).getBytes("GBK").length + 1;
 760                             if (widthTemp > widthConfig[j])
 761                             {
 762                                 widthConfig[j] = widthTemp;
 763                             }
 764                         }
 765                         else if (obj instanceof Long)
 766                         {
 767                             jxl.write.Number number = new jxl.write.Number(j, i, (Long)obj, wcf);
 768                             sheet.addCell(number);
 769
 770                             widthTemp = String.valueOf(obj).getBytes("GBK").length + 1;
 771                             if (widthTemp > widthConfig[j])
 772                             {
 773                                 widthConfig[j] = widthTemp;
 774                             }
 775                         }
 776                         else
 777                         {
 778                             Label label = new Label(j, i, (String)obj, wcf);
 779                             sheet.addCell(label);
 780
 781                             widthTemp = String.valueOf(obj).getBytes("GBK").length + 1;
 782                             if (widthTemp > widthConfig[j])
 783                             {
 784                                 widthConfig[j] = widthTemp;
 785                             }
 786                         }
 787                     }
 788                 }
 789             }
 790
 791             if (GeneralUtils.isNotNull(param) && "suppProdSell".equals(param))
 792             {
 793                 WritableFont font1 = new WritableFont(WritableFont.TIMES, 10, WritableFont.BOLD);
 794                 WritableCellFormat wcf1 = new WritableCellFormat(font1);
 795                 wcf1.setAlignment(jxl.format.Alignment.RIGHT);
 796
 797                 String obj = "总计(元):" + String.valueOf(totalMoney) + "元";
 798                 Label label = new Label(0, xlContents.size(), (String)obj, wcf1);
 799                 sheet.mergeCells(0, xlContents.size(), cellConfig.length - 1, xlContents.size());
 800                 sheet.addCell(label);
 801             }
 802             for (int i = 0; i < widthConfig.length; i++)
 803             {
 804                 sheet.setColumnView(i, widthConfig[i]);
 805                 //System.out.println(widthConfig[i]);
 806             }
 807
 808             book.write();
 809             book.close();
 810         }
 811         catch (Exception e)
 812         {
 813             e.printStackTrace();
 814         }
 815
 816     }
 817
 818     /**
 819      * 讲字符串转换成byte数组
 820      * @param str 字符串
 821      * @return 转换后的byte数组
 822      */
 823     public static byte[] stringToBytes(String str)
 824     {
 825         try
 826         {
 827             if (GeneralUtils.isNotNull(str))
 828             {
 829                 return str.getBytes(GeneralConstant.CHARACTER_CODING);
 830             }
 831             else
 832             {
 833                 return new byte[0];
 834             }
 835
 836         }
 837         catch (UnsupportedEncodingException e)
 838         {
 839             // 该异常不会发生
 840
 841             return new byte[0];
 842         }
 843     }
 844
 845     /**
 846      * 讲byte[]转换成字符窜
 847      * @param arr byte数组
 848      * @return 转换后的字符串
 849      */
 850     public static String bytesToSting(byte[] arr)
 851     {
 852         try
 853         {
 854             return new String(arr, GeneralConstant.CHARACTER_CODING);
 855         }
 856         catch (UnsupportedEncodingException e)
 857         {
 858             // 该异常不会发生
 859
 860             return "";
 861         }
 862     }
 863
 864     /**
 865      * 大字段转字符串
 866      *
 867      * @param clob 大字段对象
 868      * @return 字符串
 869      * @throws Exception 异常
 870      */
 871     public static String clobToString(java.sql.Clob clob)
 872         throws Exception
 873     {
 874         if (isNull(clob))
 875         {
 876             return " ";
 877         }
 878         StringBuffer sb2 = new StringBuffer();
 879         Reader instream = null;
 880         instream = clob.getCharacterStream();
 881         BufferedReader in = new BufferedReader(instream);
 882         String line = null;
 883         while ((line = in.readLine()) != null)
 884         {
 885             sb2.append(line);
 886         }
 887         return sb2.toString();
 888     }
 889
 890     /**
 891      * 数量格式化工具
 892      * 如果是1.0则格式化为1
 893      * 如果是1.10则格式化为1.1
 894      * @param number 数字
 895      * @return 数字字符串
 896      * @see [类、类#方法、类#成员]
 897      */
 898     public static String doubleToIntString(double number)
 899     {
 900         String numStr = String.valueOf(number);
 901         if (numStr.endsWith(".0"))
 902         {
 903             numStr = numStr.substring(0, numStr.indexOf(".0"));
 904         }
 905         return numStr;
 906     }
 907
 908     /**
 909      * 格式化GOOGLE地图返回的经纬度串
 910      * 源字符串格式为"(111.9009,98.47498)"
 911      * 转换过后格式为"111.9009,98.47498"
 912      * @param latlng
 913      * @return
 914      * @see [类、类#方法、类#成员]
 915      */
 916     public static String formatGoogleLatlng(String latlng)
 917     {
 918         if (GeneralUtils.isNotNullOrZeroLenght(latlng))
 919         {
 920             return latlng.replace("(", "").replace(")", "");
 921         }
 922         return null;
 923     }
 924
 925     public static String numberFormat(Double d)
 926     {
 927         if (null != d)
 928         {
 929             DecimalFormat df = new DecimalFormat();
 930             String style = "#,##0.00#";
 931             df.applyPattern(style);
 932             return df.format(d);
 933         }
 934         else
 935         {
 936             return null;
 937         }
 938     }
 939
 940     /**
 941      * 获取当前日期的前一天的时间,如:20120410235959
 942      *
 943      * @return
 944      * @throws Exception
 945      */
 946     public static String createLastDayfStr()
 947         throws Exception
 948     {
 949         StringBuilder sb = new StringBuilder();
 950
 951         Calendar rightNow = Calendar.getInstance();
 952
 953         rightNow.add(Calendar.DATE, -1);
 954
 955         sb.append(rightNow.get(Calendar.YEAR));
 956
 957         int currentMonth = rightNow.get(Calendar.MONTH) + 1;
 958
 959         if (currentMonth < 10)
 960         {
 961             sb.append("0");
 962         }
 963
 964         sb.append(currentMonth);
 965
 966         int date = rightNow.get(Calendar.DATE);
 967
 968         if (date < 10)
 969         {
 970             sb.append("0");
 971         }
 972
 973         sb.append(date);
 974
 975         sb.append("235959");
 976
 977         return sb.toString();
 978     }
 979
 980     /**
 981      * 计算时间差 time2-time1
 982      * @param unit 返回的日期格式 <br/>
 983      *             d:天 h:天-小时 m:天-小时-分 s:天-小时-分-秒<br/>
 984      *             H:小时-分-秒 M:分-秒 Hm:小时-分
 985      * @param time1 时间1 格式务必为(yyyyyMMddHHmmss )(被减数)
 986      * @param time2 时间2 格式务必为(yyyyMMddHHmmss )(减数)
 987      * @return 时间差
 988      * @throws Exception 异常
 989      * @see [类、类#方法、类#成员]
 990      */
 991     public static String calcTimeDiff(String unit, String time1, String time2)
 992         throws Exception
 993     {
 994         //时间单位(如:不足1天(24小时) 则返回0),开始时间,结束时间
 995         Date date1 = new SimpleDateFormat("yyyyMMddHHmmss").parse(time1);
 996         Date date2 = new SimpleDateFormat("yyyyMMddHHmmss").parse(time2);
 997         long ltime = date1.getTime() - date2.getTime() < 0 ? date2.getTime() - date1.getTime()
 998             : date1.getTime() - date2.getTime();
 999         //返回天数
1000         long dnum = ltime / 86400000;
1001         //返回秒
1002         long secnum = ltime / 1000;
1003         long hnum = 0;
1004         long mnum = 0;
1005         long snum = 0;
1006         if (secnum < 86400)
1007             dnum = 0;
1008         long sd = dnum * 24 * 3600;
1009         long sh = secnum - sd;
1010         hnum = sh / 3600;
1011         long sm = sh - hnum * 3600;
1012         mnum = sm / 60;
1013         snum = sm - mnum * 60;
1014         if (unit.equals("d"))
1015         {
1016             return dnum + "天";
1017         }
1018         else if (unit.equals("h"))
1019         {
1020             return dnum + "天" + hnum + "小时";
1021         }
1022         else if (unit.equals("m"))
1023         {
1024             return dnum + "天" + hnum + "小时" + mnum + "分";
1025         }
1026         else if (unit.equals("s"))
1027         {
1028             return dnum + "天" + hnum + "小时" + mnum + "分" + snum + "秒";
1029         }
1030         else if (unit.equals("H"))
1031         {
1032             return dnum * 24 + hnum + "小时" + mnum + "分" + snum + "秒";
1033         }
1034         else if (unit.equals("M"))
1035         {
1036             return (dnum * 24 + hnum) * 60 + "分" + snum + "秒";
1037         }
1038         else if (unit.equals("Hm"))
1039         {
1040             return dnum * 24 + hnum + "小时" + mnum + "分";
1041         }
1042         else
1043         {
1044             return dnum + "天" + hnum + "小时" + mnum + "分" + snum + "秒";
1045         }
1046     }
1047
1048     /**
1049      * 获取当前时间的上一个月同等时间
1050      *
1051      * @return String 时间格式:YYYYMMDDHHMMSS
1052      * @throws Exception Exception
1053      */
1054     public static String createLastMonthTime()
1055         throws Exception
1056     {
1057         Calendar calendar = Calendar.getInstance();
1058
1059         long timeMillis = calendar.getTimeInMillis() - 2592000000l;
1060
1061         calendar.setTimeInMillis(timeMillis);
1062
1063         return GeneralUtils.date2String(calendar.getTime(), GeneralConstant.DATETIME_14);
1064     }
1065
1066     /**
1067      * 将时间段转化成用于显示的形式,如3600秒转化成1小时
1068      * @param time
1069      * @return
1070      */
1071     public static String time2View(Long time)
1072     {
1073         if (time >= 0 && time < 60)
1074         {
1075             return time + "秒";
1076         }
1077         else if (time >= 60 && time < 60 * 60)
1078         {
1079             return time / 60 + "分钟";
1080         }
1081         else if (time >= 60 * 60 && time < 60 * 60 * 24)
1082         {
1083             return time / (60 * 60) + "小时";
1084         }
1085         else if (time >= 60 * 60 * 24)
1086         {
1087             return time / (60 * 60 * 24) + "天";
1088         }
1089         else
1090         {
1091             return "";
1092         }
1093     }
1094
1095     /**
1096      * 提供精确的减法运算。
1097      * @param v1 被减数
1098      * @param v2 减数
1099      * @return 两个参数的差
1100      */
1101     public static double sub(double v1, double v2)
1102     {
1103         BigDecimal b1 = new BigDecimal(Double.toString(v1));
1104         BigDecimal b2 = new BigDecimal(Double.toString(v2));
1105         return b1.subtract(b2).doubleValue();
1106     }
1107
1108     /**
1109      * 提供精确的加法运算。
1110      * @param v1 被加数
1111      * @param v2 加数
1112      * @return 两个参数的和
1113      */
1114     public static double add(double v1, double v2)
1115     {
1116         BigDecimal b1 = new BigDecimal(Double.toString(v1));
1117         BigDecimal b2 = new BigDecimal(Double.toString(v2));
1118         return b1.add(b2).doubleValue();
1119     }
1120
1121     /**
1122      * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 小数点以后10位,以后的数字四舍五入。
1123      *
1124      * @param v1
1125      *            被除数
1126      * @param v2
1127      *            除数
1128      * @return 两个参数的商
1129      */
1130
1131     public static double div(double v1, double v2)
1132     {
1133         return div(v1, v2, 10);
1134     }
1135
1136     /**
1137      * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入。
1138      *
1139      * @param v1
1140      *            被除数
1141      * @param v2
1142      *            除数
1143      * @param scale
1144      *            表示表示需要精确到小数点以后几位。
1145      * @return 两个参数的商
1146      */
1147
1148     public static double div(double v1, double v2, int scale)
1149     {
1150         if (scale < 0)
1151         {
1152             throw new IllegalArgumentException("The   scale   must   be   a   positive   integer   or   zero");
1153         }
1154         BigDecimal b1 = new BigDecimal(Double.toString(v1));
1155         BigDecimal b2 = new BigDecimal(Double.toString(v2));
1156         return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
1157     }
1158
1159     public static String getParamValueByKey(Map<String, Object> paramMap, String key)
1160     {
1161         String paramValue = null;
1162         try
1163         {
1164             Object paramObject = paramMap.get(key);
1165             paramValue = paramObject.toString();
1166         }
1167         catch (Exception e)
1168         {
1169         }
1170         return paramValue;
1171     }
1172
1173     /**
1174      * 数字不足位数左补0
1175      * @param str
1176      * @param strLength
1177      * @return
1178      */
1179     public static String addZeroForNum(String str, int strLength)
1180     {
1181         return addZeroForNum(str, strLength, true);
1182     }
1183
1184     /**
1185      * 数字不足位数补0
1186      * @param str
1187      * @param strLength
1188      * @param isLeft    为true时,左补;否则,右补
1189      * @return
1190      */
1191     public static String addZeroForNum(String str, int strLength, Boolean isLeft)
1192     {
1193         int strLen = str.length();
1194         if (strLen < strLength)
1195         {
1196             while (strLen < strLength)
1197             {
1198                 StringBuffer sb = new StringBuffer();
1199                 str = isLeft ? sb.append("0").append(str).toString() : sb.append(str).append("0").toString();
1200                 strLen = str.length();
1201             }
1202         }
1203         return str;
1204     }
1205
1206     // 将 s 进行 BASE64 编码
1207     public static String getBASE64(String s)
1208     {
1209         if (s == null)
1210             return null;
1211         return (new sun.misc.BASE64Encoder()).encode(s.getBytes());
1212     }
1213
1214     // 将 BASE64 编码的字符串 s 进行解码
1215     public static String getFromBASE64(String s)
1216     {
1217         if (s == null)
1218             return null;
1219         BASE64Decoder decoder = new BASE64Decoder();
1220         try
1221         {
1222             byte[] b = decoder.decodeBuffer(s);
1223             return new String(b);
1224         }
1225         catch (Exception e)
1226         {
1227             return null;
1228         }
1229     }
1230
1231     //方法名称:isSameWeek(String date1,String date2)
1232     //功能描述:判断date1和date2是否在同一周
1233     //输入参数:date1,date2
1234     //输出参数:
1235     //返 回 值:false 或 true
1236     //其它说明:主要用到Calendar类中的一些方法
1237     //-----------------------------
1238     public static boolean isSameWeekOld(String date1, String date2)
1239     {
1240         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
1241         Date d1 = null;
1242         Date d2 = null;
1243         try
1244         {
1245             d1 = format.parse(date1);
1246             d2 = format.parse(date2);
1247         }
1248         catch (Exception e)
1249         {
1250             e.printStackTrace();
1251         }
1252         Calendar cal1 = Calendar.getInstance();
1253         Calendar cal2 = Calendar.getInstance();
1254         cal1.setTime(d1);
1255         cal2.setTime(d2);
1256         int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
1257         //subYear==0,说明是同一年
1258         if (subYear == 0)
1259         {
1260             if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
1261                 return true;
1262         }
1263         //例子:cal1是"2005-1-1",cal2是"2004-12-25"
1264         //java对"2004-12-25"处理成第52周
1265         // "2004-12-26"它处理成了第1周,和"2005-1-1"相同了
1266         //大家可以查一下自己的日历
1267         //处理的比较好
1268         //说明:java的一月用"0"标识,那么12月用"11"
1269         else if (subYear == 1 && cal2.get(Calendar.MONTH) == 11)
1270         {
1271             if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
1272                 return true;
1273         }
1274         //例子:cal1是"2004-12-31",cal2是"2005-1-1"
1275         else if (subYear == -1 && cal1.get(Calendar.MONTH) == 11)
1276         {
1277             if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR))
1278                 return true;
1279
1280         }
1281         return false;
1282     }
1283
1284     /**
1285      * 判断两个时间是否在同一周
1286      *
1287      * @param firstDate
1288      * @param secondDate
1289      * @return
1290      * @throws ParseException
1291      */
1292     public static boolean isSameWeek(String dateStr1, String dateStr2, String format)
1293     {
1294         if (isNullOrZeroLenght(format))
1295         {
1296             format = GeneralConstant.DATETIME_14;
1297         }
1298         Date firstDate = string2Date(dateStr1, format);
1299         Date secondDate = string2Date(dateStr2, format);
1300
1301         /** 以下先根据第一个时间找出所在周的星期一、星期日, 再对第二个时间进行比较 */
1302         Calendar calendarMonday = Calendar.getInstance();
1303         calendarMonday.setTime(firstDate);
1304
1305         // 获取firstDate在当前周的第几天. (星期一~星期日:1~7)
1306         int monday = calendarMonday.get(Calendar.DAY_OF_WEEK);
1307         if (monday == 0)
1308         {
1309             monday = 7;
1310         }
1311
1312         // 星期一开始时间
1313         calendarMonday.add(Calendar.DAY_OF_MONTH, -monday + 1);
1314         calendarMonday.set(Calendar.HOUR, 0);
1315         calendarMonday.set(Calendar.MINUTE, 0);
1316         calendarMonday.set(Calendar.SECOND, 0);
1317
1318         // 星期日结束时间
1319         Calendar calendarSunday = Calendar.getInstance();
1320         calendarSunday.setTime(calendarMonday.getTime());
1321         calendarSunday.add(Calendar.DAY_OF_MONTH, 6);
1322         calendarSunday.set(Calendar.HOUR, 23);
1323         calendarSunday.set(Calendar.MINUTE, 59);
1324         calendarSunday.set(Calendar.SECOND, 59);
1325
1326         //        System.out.println("星期一开始时间:" + datetimeDf.format(calendarMonday.getTime()));
1327         //        System.out.println("星期日结束时间:" + datetimeDf.format(calendarSunday.getTime()));
1328
1329         // 比较第二个时间是否与第一个时间在同一周
1330         if (secondDate.getTime() >= calendarMonday.getTimeInMillis()
1331             && secondDate.getTime() <= calendarSunday.getTimeInMillis())
1332         {
1333             return true;
1334         }
1335         return false;
1336     }
1337
1338     /**
1339      * 判断两个时间是否在同一天
1340      *
1341      * 时间格式为:yyyyMMddHHmmss
1342      *
1343      * @throws ParseException
1344      */
1345     public static boolean isSameDay(String dateStr1, String dateStr2)
1346     {
1347         // 比较第二个时间是否与第一个时间在同一天
1348         if (GeneralUtils.isNotNullOrZeroLenght(dateStr1) && GeneralUtils.isNotNullOrZeroLenght(dateStr2)
1349             && dateStr1.substring(0, 8).equals(dateStr2.substring(0, 8)))
1350         {
1351             return true;
1352         }
1353         return false;
1354     }
1355
1356     /**
1357      * 判断两个时间是否在同一月
1358      *
1359      * 时间格式为:yyyyMMddHHmmss
1360      *
1361      * @throws ParseException
1362      */
1363     public static boolean isSameMonth(String dateStr1, String dateStr2)
1364     {
1365         // 比较第二个时间是否与第一个时间在同一天
1366         if (GeneralUtils.isNotNullOrZeroLenght(dateStr1) && GeneralUtils.isNotNullOrZeroLenght(dateStr2)
1367             && dateStr1.substring(0, 6).equals(dateStr2.substring(0, 6)))
1368         {
1369             return true;
1370         }
1371         return false;
1372     }
1373
1374     /**
1375      * 获取时间差,单位分钟
1376      *
1377      * 时间格式为:yyyyMMddHHmmss
1378      *
1379      * @throws ParseException
1380      */
1381     public static long getTimeDifference(String dateStr1, String dateStr2)
1382     {
1383         long min = 60;
1384         SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
1385         java.util.Date now = null;
1386         java.util.Date date = null;
1387         try
1388         {
1389             now = df.parse(dateStr1);
1390             date = df.parse(dateStr2);
1391             long l = now.getTime() - date.getTime();
1392             long day = l / (24 * 60 * 60 * 1000);
1393             long hour = (l / (60 * 60 * 1000) - day * 24);
1394             min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60);
1395             long s = (l / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
1396             min = day * 24 * 60 + hour * 60 + min;
1397             //            System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒");
1398         }
1399         catch (ParseException e)
1400         {
1401             e.printStackTrace();
1402         }
1403         //        System.out.println("min:" + min);
1404         return min;
1405     }
1406
1407     /**
1408      * 获取时间差,单位秒
1409      *
1410      * 时间格式为:yyyyMMddHHmmss
1411      *
1412      * @throws ParseException
1413      */
1414     public static long getSTimeDifference(String dateStr1, String dateStr2)
1415     {
1416         long s = 60;
1417         SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
1418         java.util.Date now = null;
1419         java.util.Date date = null;
1420         try
1421         {
1422             now = df.parse(dateStr1);
1423             date = df.parse(dateStr2);
1424             long l = now.getTime() - date.getTime();
1425             long day = l / (24 * 60 * 60 * 1000);
1426             long hour = (l / (60 * 60 * 1000) - day * 24);
1427             long min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60);
1428             s = (l / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
1429             //            min = day * 24 * 60 + hour * 60 + min;
1430             s = day * 24 * 60 * 60 + hour * 60 * 60 + min * 60 + s;
1431             //            System.out.println("" + day + "天" + hour + "小时" + min + "分" + s + "秒");
1432         }
1433         catch (ParseException e)
1434         {
1435             e.printStackTrace();
1436         }
1437         //        System.out.println("min:" + min);
1438         return s;
1439     }
1440
1441     /**
1442      * 获取时间差,单位天
1443      *
1444      * 时间格式为:yyyyMMddHHmmss
1445      *
1446      * @throws ParseException
1447      */
1448     public static long getDayDifference(String dateStr1, String dateStr2)
1449     {
1450         long min = 60;
1451         long day = 0;
1452         SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
1453         java.util.Date now = null;
1454         java.util.Date date = null;
1455         try
1456         {
1457             now = df.parse(dateStr1);
1458             date = df.parse(dateStr2);
1459             long l = now.getTime() - date.getTime();
1460             day = l / (24 * 60 * 60 * 1000);
1461             long hour = (l / (60 * 60 * 1000) - day * 24);
1462             min = ((l / (60 * 1000)) - day * 24 * 60 - hour * 60);
1463             long s = (l / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
1464             min = day * 24 * 60 + hour * 60 + min;
1465             //            System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒");
1466         }
1467         catch (ParseException e)
1468         {
1469             e.printStackTrace();
1470         }
1471         //        System.out.println("min:" + min);
1472         return day;
1473     }
1474
1475     private static final DateFormat datetimeDf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
1476
1477     public static void main(String[] args)
1478     {
1479         // 定义两个时间
1480         //            String dateStr1 = "2010-01-27 00:00:00";
1481         //            String dateStr2 = "2010-01-30 23:59:59";
1482
1483         String dateStr1 = "20150528015525";
1484         String dateStr2 = "20150528001300";
1485         String sss="11";
1486 //        getSTimeDifference(dateStr1, dateStr2);
1487 //        getTimeDifference(dateStr1, dateStr2);
1488
1489         System.out.println(maxLength(sss, 2));
1490
1491         // 比较
1492         //System.out.println(isSameWeek(dateStr1, dateStr2, GeneralConstant.DATETIME_14) ? "两个时间在同一周" : "两个时间不在同一周");
1493
1494         //测试1
1495 //        boolean a = isSameWeekOld("2005-1-1", "2005-1-3");
1496 //        if (a)
1497 //        {
1498 //            System.out.println("2005-1-1和2005-1-3是同一周!");
1499 //        }
1500 //        else
1501 //        {
1502 //            System.out.println("2005-1-1和2005-1-3不是同一周!");
1503 //        }
1504 //
1505 //        //测试2
1506 //        boolean b = isSameWeekOld("2005-1-1", "2004-12-25");
1507 //        if (b)
1508 //        {
1509 //            System.out.println("2005-1-1和2004-12-25是同一周!");
1510 //        }
1511 //        else
1512 //        {
1513 //            System.out.println("2005-1-1和2004-12-25不是同一周!");
1514 //        }
1515 //
1516 //        boolean c = isSameWeekOld("2004-12-25", "2005-1-1");
1517 //        if (c)
1518 //        {
1519 //            System.out.println("2004-12-25和2005-1-1是同一周!");
1520 //        }
1521 //        else
1522 //        {
1523 //            System.out.println("2004-12-25和2005-1-1不是同一周!");
1524 //        }
1525 //
1526 //        //测试3
1527 //        boolean d = isSameWeekOld("2005-1-1", "2004-12-26");
1528 //        if (d)
1529 //        {
1530 //            System.out.println("2005-1-1和2004-12-26是同一周!");
1531 //        }
1532 //        else
1533 //        {
1534 //            System.out.println("2005-1-1和2004-12-26不是同一周!");
1535 //        }
1536 //
1537 //        boolean e = isSameWeekOld("2004-12-26", "2005-1-1");
1538 //        if (e)
1539 //        {
1540 //            System.out.println("2004-12-26和2005-1-1是同一周!");
1541 //        }
1542 //        else
1543 //        {
1544 //            System.out.println("2004-12-26和2005-1-1不是同一周!");
1545 //        }
1546 //
1547 //        System.out.println("*************************************");
1548 //        //测试1
1549 //        boolean a1 = isSameWeekOld("2015-1-1", "2015-1-3");
1550 //        if (a1)
1551 //        {
1552 //            System.out.println("2015-1-1和2015-1-3是同一周!");
1553 //        }
1554 //        else
1555 //        {
1556 //            System.out.println("2015-1-1和2015-1-3不是同一周!");
1557 //        }
1558 //
1559 //        //测试2
1560 //        boolean b1 = isSameWeekOld("2015-1-1", "2014-12-25");
1561 //        if (b1)
1562 //        {
1563 //            System.out.println("2015-1-1和2014-12-25是同一周!");
1564 //        }
1565 //        else
1566 //        {
1567 //            System.out.println("2015-1-1和2014-12-25不是同一周!");
1568 //        }
1569 //
1570 //        boolean c1 = isSameWeekOld("2014-12-25", "2015-1-1");
1571 //        if (c1)
1572 //        {
1573 //            System.out.println("2014-12-25和2015-1-1是同一周!");
1574 //        }
1575 //        else
1576 //        {
1577 //            System.out.println("2014-12-25和2015-1-1不是同一周!");
1578 //        }
1579 //
1580 //        //测试3
1581 //        boolean d1 = isSameWeekOld("2015-1-1", "2014-12-26");
1582 //        if (d1)
1583 //        {
1584 //            System.out.println("2015-1-1和2014-12-26是同一周!");
1585 //        }
1586 //        else
1587 //        {
1588 //            System.out.println("2015-1-1和2014-12-26不是同一周!");
1589 //        }
1590 //
1591 //        boolean e1 = isSameWeekOld("2014-12-26", "2015-1-1");
1592 //        if (e1)
1593 //        {
1594 //            System.out.println("2014-12-26和2015-1-1是同一周!");
1595 //        }
1596 //        else
1597 //        {
1598 //            System.out.println("2014-12-26和2015-1-1不是同一周!");
1599 //        }
1600
1601     }
1602
1603 }
时间: 2024-11-07 04:48:27

Java的各种工具类的相关文章

UrlUtils工具类,Java URL工具类,Java URL链接工具类

UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ?Copyright 蕃薯耀 2017年7月15日 http://www.cnblogs.com/fanshuyao/ Java代码   import java.util.Ha

Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ?Copyright 蕃薯耀 2017年9月13日 http://www.cnblogs.com/fanshuyao/ 直接上代码: import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.ref

[精品] 收集的27个java开发常用工具类.基本满足开发需求

原文:[精品] 收集的27个java开发常用工具类.基本满足开发需求 源代码下载地址:http://www.zuidaima.com/share/1596028005993472.htm 最近从网上收集的java开发常用的工具类,分享给大家.基本满足开发需求.推荐给热爱最代码以及java的牛牛们.   每个类都有注释的,欢迎大家可以下载使用. 字符编码:CharTools, base64:Base64 *.java Md5加密:  MD5*.java 上传:*Uploader* 生成缩略图类:T

java MD5数据加密工具类

package com.wetuo.util; import java.security.MessageDigest; /**  * 数据加密工具类  * @author wzp  *  */ public class DataUtil { public static String md5(String str) { StringBuffer buffer = new StringBuffer(); char[] chars = { '0', '1', '2', '3', '4', '5', '

Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类

Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类   =========================== ?Copyright 蕃薯耀 2017年9月25日 http://www.cnblogs.com/fanshuyao/ 一.问题描述 很多对外网站的某些内容都需要过滤敏感词,避免政治与色@情上的问题. 二.解决方案 使用词库进行匹配过滤成 * (星号) Java 敏感词工具类及敏感词词库见附件. 1.下载后,有几个类,主要为WordFilter 这个工具类,使用方法如下

Redis Java客户端jedis工具类以及Redis实现的跨jvm的锁

Redis Java客户端jedis工具类以及Redis实现的跨jvm的锁 最近项目中使用redis,学习了一下,client端使用jedis-2.1.0 首先是一个redis实现的跨jvm的lock, 接着是一个简单封装的工具类,也对pipeline处理进行了几个常用的封装 然后是对应Spring的相关配置 Java代码   public class RedisLock { /** 加锁标志 */ public static final String LOCKED = "TRUE";

java文件处理工具类

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileRea

java格式处理工具类

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.math.BigInteger; import java.text.Par

java 读取配置文件工具类 (how to read values from properties file in java)

Java 读取配置文件工具类 使用 java.util.Properties import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class PropertiesReader { private static Properties prop; static { reload(); } private static void reload() { prop = new

java 图片处理工具类

import java.awt.Image;  import java.awt.Rectangle;  import java.awt.geom.AffineTransform;  import java.awt.image.AffineTransformOp;  import java.awt.image.BufferedImage;  import java.io.File;  import java.io.FileInputStream;  import java.io.IOExcepti