1、Java数据类型

/**  * 1、基本数据类型的变量:  *  *   1)、整数类型:byte(1字节=8bit),short(2字节),int(4字节),long(8字节)  *  *   2)、浮点数类型:float(4字节),double(8字节)  *  *   3)、字符类型:char(2字节)----Unicode码  *  *   4)、布尔类型:boolean(未指定字节数)----true和false  *  * 2、引用数据类型的变量:  *  *   除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型,比如String。  * */

/**  * 包装类:  * 1、基本包装类  *    Boolean  *    Byte  *    Short  *    Character  *    Long  *    Integer  *    Float  *    Double  *  * 2、高精度数字  *    BigDecimal  *    BigInteger  * */

/**  * 1、自动类型转换  *    byte 、char 、short --> int --> long --> float --> double  *  * 2、强制类型转换  *    使用强转符:(),可能导致精度损失  * */

1、MAIN方法

import com.iven.data.utils.DataConversionUtil; import com.iven.data.utils.DateUtil;  import java.util.Date;  /**  * JVM的基本了解:  * 1、方法区内存:存储字节码代码片段、静态变量  * 2、堆内存:new实例变量、数组  * 3、栈内存:局部变量  * */ public class DataTypeDemo {     /**      * Demo01: 基本数据类型的注意      * */     public static void basicDataDemo(){         /**          * 1、声明long型变量,必须以l或L结尾,其整数默认是int类型(易超出其取值范围而报错)          * 2、需注意数据的取值范围          *      (1)、byte的取值范围:-128~127(-2^7~2^7-1)          *      (2)、short的取值范围:-32768 ~ 32767(-2^15~2^15-1)          *      (3)、int取值范围:-2147483648 ~ 2147483647(-2^31~2^31-1)          *      (4)、。。。。。。          * 3、浮点型默认是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型会造成精度损失,因此需要强制类型转换          * 4、整数默认是int类型          */         //错误:         //long l = 2147483648;         long l = 2147483648L;          //byte b=128;         byte b=28;          //丢失精度,两种解决方案         //float f=1.2;         float f1=1.2f;         float f2=(float) 1.2;          //丢失精度         //short s1 = 1;         //s1 = s1 + 1;         short s1 = 1;         short s2 = 1;         s1 = (short)(s1 + 1);         //有隐含的强制类型转换,推荐使用         s2 +=1;          System.out.println(l);         System.out.println(b);         System.out.println(f1);         System.out.println(f2);         System.out.println(s1);         System.out.println(s2);     }      /**      * Demo02: String引用数据类型的注意      * */     public static void stringDataDemo(){         /**          * 1、String s1 = 123;          *  在静态区的“123”(字符串常量池)创建了一个对象          * 2、String s2 = new String(123);          *  创建了二个对象:一个在静态区的“123”(字符串常量池)对象,一个是用new创建在堆上的对象          * */         String s1 = 123;         String s2 = new String(123);         System.out.println(s1 == s2);   //false          String s3 = 123456;         String s4 = 123 + 456;         System.out.println(s3 == s4);   //true          String s5 = s1 + 456;         System.out.println(s5 == s4);   //false          /**          * String类型是只读字符串,字符串内容不允许改变          * Stringbuffer/ Stringbulider表示字符串对象可以修改          * 1、 Stringbuffer:有synchronized关键字修饰,表示线程安全的,效率低          * 2、 Stringbulider:无synchronized关键字修饰,表示非线程安全的,效率高          * 开发建议使用:Stringbuffer》Stringbulider》String          * */         String a = new String(123);         StringBuffer b = new StringBuffer(123);         b.append(456);    //字符串a不允许修改         System.out.println(a:+ a);         System.out.println(b:+ b);     }      /**      * Demo03: 数据间转换的注意      * */     public static void dataConversionDemo(){         /**          * 数据转换工具类:DataConversionUtil          * 1、自动装箱:自动将基本数据类型转换为包装器类型          * 2、自动拆箱:自动将包装器类型转换为基本数据类型          * 3、声明包装类可以避免空指针异常          * */         String a =123;         int b;         int c;         //利用包装类实现自动装箱与自动拆箱,即数据类型转换         b = Integer.parseInt(a);         //调用工具类的静态方法         c = DataConversionUtil.toInt(a);         System.out.println(b);         System.out.println(c);         int d =123;          String e ;         String f ;         e = DataConversionUtil.toStr(d);         f = String.valueOf(d);         System.out.println(e);         System.out.println(f);          Integer i = null;         System.out.println(i);         //报错         //int j = null;         //System.out.println(j);     }      /**      * Demo04: 日期类型使用的注意      * */     public static void dateUsingDemo(){         /**          * 日期相关工具类:DateUtil          * */         //输出:Fri May 13 21:43:49 CST 2022         Date date = new Date();         System.out.println(date);          //转换格式:         //取得当前日期的字符串表现形式         String d = DateUtil.getDate();         System.out.println(d);     }      public static void main(String[] args) {         //静态方法不需要实例化         basicDataDemo();         stringDataDemo();         dataConversionDemo();         dateUsingDemo();         System.out.println(结束);     } }

 

2、数据转换工具类

import java.math.BigDecimal; import java.math.BigInteger; import java.nio.ByteBuffer; import java.nio.charset.Charset; import java.text.NumberFormat; import java.util.Set;  import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils;  /**  * 数据转换工具类  */ public class DataConversionUtil {     /**      * 转换为字符串<br>      * 如果给定的值为null,或者转换失败,返回默认值<br>      * 转换失败不会报错      *      * @param value        被转换的值      * @param defaultValue 转换错误时的默认值      * @return 结果      */     public static String toStr(Object value, String defaultValue) {         if (null == value) {             return defaultValue;         }         if (value instanceof String) {             return (String) value;         }         return value.toString();     }      /**      * 转换为字符串<br>      * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>      * 转换失败不会报错      *      * @param value 被转换的值      * @return 结果      */     public static String toStr(Object value) {         return toStr(value, null);     }      /**      * 转换为字符<br>      * 如果给定的值为null,或者转换失败,返回默认值<br>      * 转换失败不会报错      *      * @param value        被转换的值      * @param defaultValue 转换错误时的默认值      * @return 结果      */     public static Character toChar(Object value, Character defaultValue) {         if (null == value) {             return defaultValue;         }         if (value instanceof Character) {             return (Character) value;         }          final String valueStr = toStr(value, null);         return StringUtils.isEmpty(valueStr) ? defaultValue : valueStr.charAt(0);     }      /**      * 转换为字符<br>      * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>      * 转换失败不会报错      *      * @param value 被转换的值      * @return 结果      */     public static Character toChar(Object value) {         return toChar(value, null);     }      /**      * 转换为byte<br>      * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<br>      * 转换失败不会报错      *      * @param value        被转换的值      * @param defaultValue 转换错误时的默认值      * @return 结果      */     public static Byte toByte(Object value, Byte defaultValue) {         if (value == null) {             return defaultValue;         }         if (value instanceof Byte) {             return (Byte) value;         }         if (value instanceof Number) {             return ((Number) value).byteValue();         }         final String valueStr = toStr(value, null);         if (StringUtils.isEmpty(valueStr)) {             return defaultValue;         }         try {             return Byte.parseByte(valueStr);         } catch (Exception e) {             return defaultValue;         }     }      /**      * 转换为byte<br>      * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>      * 转换失败不会报错      *      * @param value 被转换的值      * @return 结果      */     public static Byte toByte(Object value) {         return toByte(value, null);     }      /**      * 转换为Short<br>      * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<br>      * 转换失败不会报错      *      * @param value        被转换的值      * @param defaultValue 转换错误时的默认值      * @return 结果      */     public static Short toShort(Object value, Short defaultValue) {         if (value == null) {             return defaultValue;         }         if (value instanceof Short) {             return (Short) value;         }         if (value instanceof Number) {             return ((Number) value).shortValue();         }         final String valueStr = toStr(value, null);         if (StringUtils.isBlank(valueStr)) {             return defaultValue;         }         try {             return Short.parseShort(valueStr.trim());         } catch (Exception e) {             return defaultValue;         }     }      /**      * 转换为Short<br>      * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>      * 转换失败不会报错      *      * @param value 被转换的值      * @return 结果      */     public static Short toShort(Object value) {         return toShort(value, null);     }      /**      * 转换为Number<br>      * 如果给定的值为空,或者转换失败,返回默认值<br>      * 转换失败不会报错      *      * @param value        被转换的值      * @param defaultValue 转换错误时的默认值      * @return 结果      */     public static Number toNumber(Object value, Number defaultValue) {         if (value == null) {             return defaultValue;         }         if (value instanceof Number) {             return (Number) value;         }         final String valueStr = toStr(value, null);         if (StringUtils.isEmpty(valueStr)) {             return defaultValue;         }         try {             return NumberFormat.getInstance().parse(valueStr);         } catch (Exception e) {             return defaultValue;         }     }      /**      * 转换为Number<br>      * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>      * 转换失败不会报错      *      * @param value 被转换的值      * @return 结果      */     public static Number toNumber(Object value) {         return toNumber(value, null);     }      /**      * 转换为int<br>      * 如果给定的值为空,或者转换失败,返回默认值<br>      * 转换失败不会报错      *      * @param value        被转换的值      * @param defaultValue 转换错误时的默认值      * @return 结果      */     public static Integer toInt(Object value, Integer defaultValue) {         if (value == null) {             return defaultValue;         }         if (value instanceof Integer) {             return (Integer) value;         }         if (value instanceof Number) {             return ((Number) value).intValue();         }         final String valueStr = toStr(value, null);         if (StringUtils.isEmpty(valueStr)) {             return defaultValue;         }         try {             return Integer.parseInt(valueStr.trim());         } catch (Exception e) {             return defaultValue;         }     }      /**      * 转换为int<br>      * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>      * 转换失败不会报错      *      * @param value 被转换的值      * @return 结果      */     public static Integer toInt(Object value) {         return toInt(value, null);     }      /**      * 转换为Integer数组<br>      *      * @param str 被转换的值      * @return 结果      */     public static Integer[] toIntArray(String str) {         return toIntArray(,, str);     }      /**      * 转换为Long数组<br>      *      * @param str 被转换的值      * @return 结果      */     public static Long[] toLongArray(String str) {         return toLongArray(,, str);     }      /**      * 转换为Integer数组<br>      *      * @param split 分隔符      * @param split 被转换的值      * @return 结果      */     public static Integer[] toIntArray(String split, String str) {         if (StringUtils.isEmpty(str)) {             return new Integer[]{};         }         String[] arr = str.split(split);         final Integer[] ints = new Integer[arr.length];         for (int i = 0; i < arr.length; i++) {             final Integer v = toInt(arr[i], 0);             ints[i] = v;         }         return ints;     }      /**      * 转换为Long数组<br>      *      * @param split 分隔符      * @param str   被转换的值      * @return 结果      */     public static Long[] toLongArray(String split, String str) {         if (StringUtils.isEmpty(str)) {             return new Long[]{};         }         String[] arr = str.split(split);         final Long[] longs = new Long[arr.length];         for (int i = 0; i < arr.length; i++) {             final Long v = toLong(arr[i], null);             longs[i] = v;         }         return longs;     }      /**      * 转换为String数组<br>      *      * @param str 被转换的值      * @return 结果      */     public static String[] toStrArray(String str) {         return toStrArray(,, str);     }      /**      * 转换为String数组<br>      *      * @param split 分隔符      * @param split 被转换的值      * @return 结果      */     public static String[] toStrArray(String split, String str) {         return str.split(split);     }      /**      * 转换为long<br>      * 如果给定的值为空,或者转换失败,返回默认值<br>      * 转换失败不会报错      *      * @param value        被转换的值      * @param defaultValue 转换错误时的默认值      * @return 结果      */     public static Long toLong(Object value, Long defaultValue) {         if (value == null) {             return defaultValue;         }         if (value instanceof Long) {             return (Long) value;         }         if (value instanceof Number) {             return ((Number) value).longValue();         }         final String valueStr = toStr(value, null);         if (StringUtils.isEmpty(valueStr)) {             return defaultValue;         }         try {             // 支持科学计数法             return new BigDecimal(valueStr.trim()).longValue();         } catch (Exception e) {             return defaultValue;         }     }      /**      * 转换为long<br>      * 如果给定的值为<code>null</code>,或者转换失败,返回默认值<code>null</code><br>      * 转换失败不会报错      *      * @param value 被转换的值      * @return 结果      */     public static Long toLong(Object value) {         return toLong(value, null);     }      /**      * 转换为double<br>      * 如果给定的值为空,或者转换失败,返回默认值<br>      * 转换失败不会报错      *      * @param value        被转换的值      * @param defaultValue 转换错误时的默认值      * @return 结果      */     public static Double toDouble(Object value, Double defaultValue) {         if (value == null) {             return defaultValue;         }         if (value instanceof Double) {             return (Double) value;         }         if (value instanceof Number) {             return ((Number) value).doubleValue();         }         final String valueStr = toStr(value, null);         if (StringUtils.isEmpty(valueStr)) {             return defaultValue;         }         try {             // 支持科学计数法             return new BigDecimal(valueStr.trim()).doubleValue();         } catch (Exception e) {             return defaultValue;         }     }      /**      * 转换为double<br>      * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>      * 转换失败不会报错      *      * @param value 被转换的值      * @return 结果      */     public static Double toDouble(Object value) {         return toDouble(value, null);     }      /**      * 转换为Float<br>      * 如果给定的值为空,或者转换失败,返回默认值<br>      * 转换失败不会报错      *      * @param value        被转换的值      * @param defaultValue 转换错误时的默认值      * @return 结果      */     public static Float toFloat(Object value, Float defaultValue) {         if (value == null) {             return defaultValue;         }         if (value instanceof Float) {             return (Float) value;         }         if (value instanceof Number) {             return ((Number) value).floatValue();         }         final String valueStr = toStr(value, null);         if (StringUtils.isEmpty(valueStr)) {             return defaultValue;         }         try {             return Float.parseFloat(valueStr.trim());         } catch (Exception e) {             return defaultValue;         }     }      /**      * 转换为Float<br>      * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>      * 转换失败不会报错      *      * @param value 被转换的值      * @return 结果      */     public static Float toFloat(Object value) {         return toFloat(value, null);     }      /**      * 转换为boolean<br>      * String支持的值为:true、false、yes、ok、no,1,0 如果给定的值为空,或者转换失败,返回默认值<br>      * 转换失败不会报错      *      * @param value        被转换的值      * @param defaultValue 转换错误时的默认值      * @return 结果      */     public static Boolean toBool(Object value, Boolean defaultValue) {         if (value == null) {             return defaultValue;         }         if (value instanceof Boolean) {             return (Boolean) value;         }         String valueStr = toStr(value, null);         if (StringUtils.isEmpty(valueStr)) {             return defaultValue;         }         valueStr = valueStr.trim().toLowerCase();         switch (valueStr) {             case true:                 return true;             case false:                 return false;             case yes:                 return true;             case ok:                 return true;             case no:                 return false;             case 1:                 return true;             case 0:                 return false;             default:                 return defaultValue;         }     }      /**      * 转换为boolean<br>      * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>      * 转换失败不会报错      *      * @param value 被转换的值      * @return 结果      */     public static Boolean toBool(Object value) {         return toBool(value, null);     }      /**      * 转换为Enum对象<br>      * 如果给定的值为空,或者转换失败,返回默认值<br>      *      * @param clazz        Enum的Class      * @param value        值      * @param defaultValue 默认值      * @return Enum      */     public static <E extends Enum<E>> E toEnum(Class<E> clazz, Object value, E defaultValue) {         if (value == null) {             return defaultValue;         }         if (clazz.isAssignableFrom(value.getClass())) {             @SuppressWarnings(unchecked)             E myE = (E) value;             return myE;         }         final String valueStr = toStr(value, null);         if (StringUtils.isEmpty(valueStr)) {             return defaultValue;         }         try {             return Enum.valueOf(clazz, valueStr);         } catch (Exception e) {             return defaultValue;         }     }      /**      * 转换为Enum对象<br>      * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>      *      * @param clazz Enum的Class      * @param value 值      * @return Enum      */     public static <E extends Enum<E>> E toEnum(Class<E> clazz, Object value) {         return toEnum(clazz, value, null);     }      /**      * 转换为BigInteger<br>      * 如果给定的值为空,或者转换失败,返回默认值<br>      * 转换失败不会报错      *      * @param value        被转换的值      * @param defaultValue 转换错误时的默认值      * @return 结果      */     public static BigInteger toBigInteger(Object value, BigInteger defaultValue) {         if (value == null) {             return defaultValue;         }         if (value instanceof BigInteger) {             return (BigInteger) value;         }         if (value instanceof Long) {             return BigInteger.valueOf((Long) value);         }         final String valueStr = toStr(value, null);         if (StringUtils.isEmpty(valueStr)) {             return defaultValue;         }         try {             return new BigInteger(valueStr);         } catch (Exception e) {             return defaultValue;         }     }      /**      * 转换为BigInteger<br>      * 如果给定的值为空,或者转换失败,返回默认值<code>null</code><br>      * 转换失败不会报错      *      * @param value 被转换的值      * @return 结果      */     public static BigInteger toBigInteger(Object value) {         return toBigInteger(value, null);     }      /**      * 转换为BigDecimal<br>      * 如果给定的值为空,或者转换失败,返回默认值<br>      * 转换失败不会报错      *      * @param value        被转换的值      * @param defaultValue 转换错误时的默认值      * @return 结果      */     public static BigDecimal toBigDecimal(Object value, BigDecimal defaultValue) {         if (value == null) {             return defaultValue;         }         if (value instanceof BigDecimal) {             return (BigDecimal) value;         }         if (value instanceof Long) {             return new BigDecimal((Long) value);         }         if (value instanceof Double) {             return new BigDecimal((Double) value);         }         if (value instanceof Integer) {             return new BigDecimal((Integer) value);         }         final String valueStr = toStr(value, null);         if (StringUtils.isEmpty(valueStr)) {             return defaultValue;         }         try {             return new BigDecimal(valueStr);         } catch (Exception e) {             return defaultValue;         }     }      /**      * 转换为BigDecimal<br>      * 如果给定的值为空,或者转换失败,返回默认值<br>      * 转换失败不会报错      *      * @param value 被转换的值      * @return 结果      */     public static BigDecimal toBigDecimal(Object value) {         return toBigDecimal(value, null);     }      /**      * 将对象转为字符串<br>      * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法      *      * @param obj 对象      * @return 字符串      */     public static String utf8Str(Object obj) {         return str(obj, UTF-8);     }      /**      * 将对象转为字符串<br>      * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法      *      * @param obj         对象      * @param charsetName 字符集      * @return 字符串      */     public static String str(Object obj, String charsetName) {         return str(obj, Charset.forName(charsetName));     }      /**      * 将对象转为字符串<br>      * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法      *      * @param obj     对象      * @param charset 字符集      * @return 字符串      */     public static String str(Object obj, Charset charset) {         if (null == obj) {             return null;         }          if (obj instanceof String) {             return (String) obj;         } else if (obj instanceof byte[]) {             return str((byte[]) obj, charset);         } else if (obj instanceof Byte[]) {             byte[] bytes = ArrayUtils.toPrimitive((Byte[]) obj);             return str(bytes, charset);         } else if (obj instanceof ByteBuffer) {             return str((ByteBuffer) obj, charset);         }         return obj.toString();     }      /**      * 将byte数组转为字符串      *      * @param bytes   byte数组      * @param charset 字符集      * @return 字符串      */     public static String str(byte[] bytes, String charset) {         return str(bytes, StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset));     }      /**      * 解码字节码      *      * @param data    字符串      * @param charset 字符集,如果此字段为空,则解码的结果取决于平台      * @return 解码后的字符串      */     public static String str(byte[] data, Charset charset) {         if (data == null) {             return null;         }          if (null == charset) {             return new String(data);         }         return new String(data, charset);     }      /**      * 将编码的byteBuffer数据转换为字符串      *      * @param data    数据      * @param charset 字符集,如果为空使用当前系统字符集      * @return 字符串      */     public static String str(ByteBuffer data, String charset) {         if (data == null) {             return null;         }          return str(data, Charset.forName(charset));     }      /**      * 将编码的byteBuffer数据转换为字符串      *      * @param data    数据      * @param charset 字符集,如果为空使用当前系统字符集      * @return 字符串      */     public static String str(ByteBuffer data, Charset charset) {         if (null == charset) {             charset = Charset.defaultCharset();         }         return charset.decode(data).toString();     }      // ----------------------------------------------------------------------- 全角半角转换      /**      * 半角转全角      *      * @param input String.      * @return 全角字符串.      */     public static String toSBC(String input) {         return toSBC(input, null);     }      /**      * 半角转全角      *      * @param input         String      * @param notConvertSet 不替换的字符集合      * @return 全角字符串.      */     public static String toSBC(String input, Set<Character> notConvertSet) {         char c[] = input.toCharArray();         for (int i = 0; i < c.length; i++) {             if (null != notConvertSet && notConvertSet.contains(c[i])) {                 // 跳过不替换的字符                 continue;             }              if (c[i] == ' ') {                 c[i] = '\u3000';             } else if (c[i] < '\177') {                 c[i] = (char) (c[i] + 65248);              }         }         return new String(c);     }      /**      * 全角转半角      *      * @param input String.      * @return 半角字符串      */     public static String toDBC(String input) {         return toDBC(input, null);     }      /**      * 替换全角为半角      *      * @param text          文本      * @param notConvertSet 不替换的字符集合      * @return 替换后的字符      */     public static String toDBC(String text, Set<Character> notConvertSet) {         char c[] = text.toCharArray();         for (int i = 0; i < c.length; i++) {             if (null != notConvertSet && notConvertSet.contains(c[i])) {                 // 跳过不替换的字符                 continue;             }              if (c[i] == '\u3000') {                 c[i] = ' ';             } else if (c[i] > '\uFF00' && c[i] < '\uFF5F') {                 c[i] = (char) (c[i] - 65248);             }         }         String returnString = new String(c);          return returnString;     }      /**      * 数字金额大写转换 先写个完整的然后将如零拾替换成零      *      * @param n 数字      * @return 中文大写数字      */     public static String digitUppercase(double n) {         String[] fraction = {角, 分};         String[] digit = {零, 壹, 贰, 叁, 肆, 伍, 陆, 柒, 捌, 玖};         String[][] unit = {{元, 万, 亿}, {, 拾, 佰, 仟}};          String head = n < 0 ? 负 : ;         n = Math.abs(n);          String s = ;         for (int i = 0; i < fraction.length; i++) {             s += (digit[(int) (Math.floor(n * 10 * Math.pow(10, i)) % 10)] + fraction[i]).replaceAll((零.)+, );         }         if (s.length() < 1) {             s = 整;         }         int integerPart = (int) Math.floor(n);          for (int i = 0; i < unit[0].length && integerPart > 0; i++) {             String p = ;             for (int j = 0; j < unit[1].length && n > 0; j++) {                 p = digit[integerPart % 10] + unit[1][j] + p;                 integerPart = integerPart / 10;             }             s = p.replaceAll((零.)*零$, ).replaceAll(^$, 零) + unit[0][i] + s;         }         return head + s.replaceAll((零.)*零元, 元).replaceFirst((零.)+, ).replaceAll((零.)+, 零).replaceAll(^整$, 零元整);     } }

 

3、日期转换工具类

import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;  /**  * 日期转换工具类  */ public class DateUtil {      /**      * 日期格式      */     public static final String FORMAT_DATE = yyyy-MM-dd;      /**      * 日期时间格式      */     public static final String FORMAT_DATETIME = yyyy-MM-dd HH:mm:ss;      /**      * 时间格式      */     public static final String FORMAT_TIME = HH:mm:ss;      /**      * 整点时间格式      */     public static final String FORMAT_DATETIMEZD = yyyy-MM-dd HH:00:00;      /**      * 日期格式(年, 月)      */     public static final String FORMAT_YEARMONTH = yyyy-MM;      /**      * 全时间格式      */     public static final String FORMAT_FULLTIME = yyyyMMddHHmmssSSS;      /**      * 根据规定格式的字符串得到Calendar      *      * @param dateString 日期串      * @return 对应Calendar      */     public static Calendar getCalendar(String dateString) {         Calendar calendar = Calendar.getInstance();         String[] items = dateString.split(-);         calendar.set(Integer.parseInt(items[0]), Integer.parseInt(items[1]) - 1, Integer.parseInt(items[2]));         return calendar;     }      /**      * 根据指定的日期格式将时间日期字符串转化为Date对象      *      * @param dateString 时间或日期字符串      * @param format     格式      * @return Date      */     public static Date getDateFromString(String dateString, String format) {         SimpleDateFormat sdf = new SimpleDateFormat(format);         try {             return sdf.parse(dateString);         } catch (ParseException e) {             return null;         }     }      /**      * 将Date对象根据指定的时间格式转换为String字符串      *      * @param date   Date      * @param format 格式      * @return String      */     public static String getStringFromDate(Date date, String format) {         SimpleDateFormat sdf = new SimpleDateFormat(format);         return sdf.format(date);     }       /**      * 转换时间字符串的格式      *      * @param dateString 时间字符串      * @param fromFormat 当前格式      * @param toFormat   转换格式      * @return String      */     public static String changeFormat(String dateString, String fromFormat, String toFormat) {         Date date = getDateFromString(dateString, fromFormat);         if (date == null)             return dateString;         return getStringFromDate(date, toFormat);     }      /**      * 取得当前日期时间的字符串表示形式      *      * @return String      */     public static String getDateTime() {         Calendar calendar = Calendar.getInstance();         return getStringFromDate(calendar.getTime(), FORMAT_DATETIME);     }      /**      * 取得当前日期的字符串表现形式      *      * @return String      */     public static String getDate() {         Calendar calendar = Calendar.getInstance();         return getStringFromDate(calendar.getTime(), FORMAT_DATE);     }      /**      * 取得当前时间的字符串表示形式      *      * @return String      */     public static String getTime() {         Calendar calendar = Calendar.getInstance();         return getStringFromDate(calendar.getTime(), FORMAT_TIME);     }      /**      * 取得当前年的年份      *      * @return int      */     public static int getYear() {         Calendar calendar = Calendar.getInstance();         return calendar.get(Calendar.YEAR);     }      /**      * 取得当前月的月份      *      * @return int      */     public static int getMonth() {         Calendar calendar = Calendar.getInstance();         return calendar.get(Calendar.MONTH);     }      /**      * 取得当前日的日期      *      * @return int      */     public static int getDay() {         Calendar calendar = Calendar.getInstance();         return calendar.get(Calendar.DATE);     }      /**      * 取得指定的日期字符串的星期数      *      * @param date 日期字符串      * @return String      */     public static String getChineseDayOfWeek(String date) {         Calendar calendar = getCalendar(date);         int w = calendar.get(Calendar.DAY_OF_WEEK);         String week = ;         switch (w) {             case Calendar.SUNDAY:                 week = 星期日;                 break;             case Calendar.MONDAY:                 week = 星期一;                 break;             case Calendar.TUESDAY:                 week = 星期二;                 break;             case Calendar.WEDNESDAY:                 week = 星期三;                 break;             case Calendar.THURSDAY:                 week = 星期四;                 break;             case Calendar.FRIDAY:                 week = 星期五;                 break;             case Calendar.SATURDAY:                 week = 星期六;                 break;             default:                 week = 星期一;                 break;         }         return week;     }      /**      * 取得当前日期是星期几      *      * @return String      */     public static String getDayOfWeek() {         return getChineseDayOfWeek(getDate());     }      /**      * 取得中文的数据字符串      *      * @param number 数字      * @return String      */     public static String getChineseNumber(int number) {         String n = ;         switch (number) {             case 0:                 n = O;                 break;             case 1:                 n = 一;                 break;             case 2:                 n = 二;                 break;             case 3:                 n = 三;                 break;             case 4:                 n = 四;                 break;             case 5:                 n = 五;                 break;             case 6:                 n = 六;                 break;             case 7:                 n = 七;                 break;             case 8:                 n = 八;                 break;             case 9:                 n = 九;                 break;             default:                 n = ;                 break;         }         return n;     }      /**      * 根据日期值得到中文日期字符串      *      * @param date 日期值      * @return 中文日期字符串      */     public static String getChineseDate(String date) {         if (date.length() < 10) {             return ;         } else {             String year = date.substring(0, 4);             String month = date.substring(5, 7);             String day = date.substring(8, 10);             String y1 = year.substring(0, 1);             String y2 = year.substring(1, 2);             String y3 = year.substring(2, 3);             String y4 = year.substring(3, 4);             String m2 = month.substring(1, 2);             String d1 = day.substring(0, 1);             String d2 = day.substring(1, 2);             String cy1 = getChineseNumber(Integer.parseInt(y1));             String cy2 = getChineseNumber(Integer.parseInt(y2));             String cy3 = getChineseNumber(Integer.parseInt(y3));             String cy4 = getChineseNumber(Integer.parseInt(y4));             String cm2 = getChineseNumber(Integer.parseInt(m2));             String cd1 = getChineseNumber(Integer.parseInt(d1));             String cd2 = getChineseNumber(Integer.parseInt(d2));             String cYear = cy1 + cy2 + cy3 + cy4 + 年;             String cMonth = 月;             if (Integer.parseInt(month) > 9) {                 cMonth = 十 + cm2 + cMonth;             } else {                 cMonth = cm2 + cMonth;             }             String cDay = 日;             if (Integer.parseInt(day) > 9) {                 cDay = cd1 + 十 + cd2 + cDay;             } else {                 cDay = cd2 + cDay;             }             String chineseday = cYear + cMonth + cDay;             return chineseday;         }     }      /**      * 根据日期值得到中文日期字符串      * 返回2005年09月23日格式的日期      *      * @param date 给定日期      * @return String      */     public static String getChineseTwoDate(String date) {         if (date.length() < 10) {             return ;         } else {             String year = date.substring(0, 4);             String month = date.substring(5, 7);             String day = date.substring(8, 10);             return year + 年 + month + 月 + day + 日;         }     }      /**      * 根据当天的日期值得到中文日期字符串      * 返回2005年09月23日格式的日期      *      * @return String      */     public static String getChineseTwoDate() {         return getChineseTwoDate(getDate());     }      /**      * 得到与指定日期相差指定天数的日期字符串      *      * @param date 指定的日期      * @param period     前后的天数,正值为后, 负值为前      * @param periodType 周期类别 可以是天、月、年      * @return 日期字符串      */     public static String getCertainDate(String date, int period, int periodType) {         Calendar calendar = getCalendar(date);         switch (periodType) {             case Calendar.DATE:                 calendar.add(Calendar.DATE, period);                 break;             case Calendar.MONTH:                 calendar.add(Calendar.MONTH, period);                 break;             case Calendar.YEAR:                 calendar.add(Calendar.YEAR, period);                 break;             default:                 break;         }         return getStringFromDate(calendar.getTime(), FORMAT_DATE);     }      /**      * 得到与指定日期相差指定天数的日期字符串      *      * @param dateString 指定的日期      * @param days       前后的天数,正值为后, 负值为前      * @return 日期字符串      */     public static String getCertainDate(String dateString, int days) {         Calendar calendar = getCalendar(dateString);         calendar.add(Calendar.DATE, days);         return getStringFromDate(calendar.getTime(), FORMAT_DATE);     }      /**      * 得到指定日期的星期一的日期      *      * @param dateString 日期字符串      * @return 本周星期一的日期      */     public static String getFirstDateOfWeek(String dateString) {         Calendar calendar = getCalendar(dateString);         int iCount;         if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {             iCount = -6;         } else {             iCount = Calendar.MONDAY - calendar.get(Calendar.DAY_OF_WEEK);         }         return getCertainDate(dateString, iCount);     }      /**      * 返回两个时间相差的小时数      *      * @param beginTime 开始时间      * @param endTime   结束时间      * @return 返回值      */     public static double getDiffHoure(String beginTime, String endTime) {         double dif = 0;         try {             Date eDatetime = getDateFromString(endTime, FORMAT_DATE);             Date bDatetime = getDateFromString(beginTime, FORMAT_DATE);             dif = (eDatetime.getTime() - bDatetime.getTime()) / 1000 / 3600;         } catch (Exception e) {             dif = 0;         }         return dif;     }      /**      * 得到当前日期的所在月的第一天的日期      *      * @param date 当前日期      * @return String 返回的日期      */     public static String getMonthFirstDay(String date) {         Calendar cal = getCalendar(date);         String month = String.valueOf(cal.get(Calendar.MONTH) + 1);         String year = String.valueOf(cal.get(Calendar.YEAR));         if (Integer.parseInt(month) < 10) {             month = 0 + month;         }         return year + - + month + -01;     }      /**      * 得到当前日期的所在月的最后一天的日期      *      * @param date 当前日期      * @return String 返回的日期      */     public static String getMonthLastDay(String date) {         Calendar cal = getCalendar(date);         int month = cal.get(Calendar.MONTH) + 1;         int year = cal.get(Calendar.YEAR);         int nextMonth = month + 1;         int nextYear = year;         if (nextMonth == 13) {             nextMonth = 1;             nextYear = nextYear + 1;         }         String nextMonthFirstDay = nextYear + - + nextMonth + -01;         return getCertainDate(nextMonthFirstDay, -1);     }      /**      * 取得两日期间的月份差数      *      * @param startDate 起始日期      * @param endDate   结束日期      * @return 月份差数      */     public static int getMonthDiff(String startDate, String endDate) {         String[] startArray = startDate.split(-);         String[] endArray = endDate.split(-);         int startYear = Integer.parseInt(startArray[0]);         int startMonth = Integer.parseInt(startArray[1]);         int endYear = Integer.parseInt(endArray[0]);         int endMonth = Integer.parseInt(endArray[1]);         return Math.abs((endYear - startYear) * 12 + endMonth - startMonth);     }       /**      * @param date 传入的日期      * @param days 要增加的天数      * @return Date  获取的目标日期      *      * 获得特定日期之后的固定天数的某一天      */     public static Date addDays(Date date, int days) {         Date date1 = null;         try {             if (null == date) {                 return date1;             }             Calendar calendar = Calendar.getInstance();             calendar.setTime(date);             calendar.add(Calendar.DATE, days);             date1 = calendar.getTime();         } catch (Exception e) {             e.printStackTrace();         } finally {             return date1;         }     }      /**      * @param minuendDate 被减数日期      * @param subDate     减数日期      * @return long    相差的天数      *      * 获得日期相减后的天数      */     public static int subDate(Date minuendDate, Date subDate) {         if (minuendDate != null && subDate != null) {             long timeMillions = (minuendDate.getTime() - subDate.getTime()) % (24 * 60 * 60 * 1000);             int days = new Long((minuendDate.getTime() - subDate.getTime()) / (24 * 60 * 60 * 1000)).intValue();             if (timeMillions == 0) {                 return days;             } else {                 return days + 1;             }         } else {             return 0;         }      }      /**      * 获取昨天的日期      */     public static String getYesterDayDate() {         Calendar cd = Calendar.getInstance();         cd.add(Calendar.DATE, -1);         return new SimpleDateFormat(yyyy-MM-dd).format(cd.getTime());     }      /**      * 获取昨天的日期      */     public static String getYesterDayDate(String dateformat) {         if (dateformat.isEmpty()) {             dateformat = yyyy-MM-dd;         }         Calendar cd = Calendar.getInstance();         cd.add(Calendar.DATE, -1);         return new SimpleDateFormat(dateformat).format(cd.getTime());     }      /**      *      * 获取指定日期前一天的日期      */     public static String getYesterDayDate(String strTime, String dateformat) {         Calendar cd = Calendar.getInstance();         if (strTime == null) {             cd.setTime(new Date());         }         if (dateformat == null) {             dateformat = yyyy-MM-dd HH:mm:ss;         }         DateFormat sdf = new SimpleDateFormat(dateformat);         Date date = null;         try {             date = sdf.parse(strTime);         } catch (Exception e) {             e.printStackTrace();         }         cd.setTime(date);         cd.add(Calendar.DATE, -1);         return new SimpleDateFormat(dateformat).format(cd.getTime());     }      /**      * 两时间相隔月份      * @param startDate      * @param endDate      * @return      */     public static Integer getDiffMonth(Date startDate, Date endDate){         Calendar start = Calendar.getInstance();         Calendar end = Calendar.getInstance();         start.setTime(startDate);         end.setTime(endDate);         int result = end.get(Calendar.MONTH) - start.get(Calendar.MONTH);         int month = (end.get(Calendar.YEAR) - start.get(Calendar.YEAR)) * 12;         return Math.abs(month + result);     }       /**      * 格式化时间,时间转字符串      *      * @param date null则为当前系统时间      * @param format 格式,null则默认为:'yyyy-MM-dd HH:mm:ss'      * @return 字符串格式的日期      */     public static String getDateTimeByStr(Date date, String format) {         if (date == null) {             date = new Date();         }         if (format == null) {             format = yyyy-MM-dd HH:mm:ss;         }         return new SimpleDateFormat(format).format(date);     } }

 

4、项目包

链接 提取码:o7dq



 

 

 

 

搜索

复制

<iframe height=240 width=320></iframe>