`

Java DATE 工具类

    博客分类:
  • Java
 
阅读更多

public class DateUtil

{

//默认显示日期的格式

public static final String DATAFORMAT_STR = "yyyy-MM-dd";

//默认显示日期的格式

public static final String YYYY_MM_DATAFORMAT_STR = "yyyy-MM";

//默认显示日期时间的格式

public static final String DATATIMEF_STR = "yyyy-MM-dd HH:mm:ss";

//默认显示简体中文日期的格式

public static final String ZHCN_DATAFORMAT_STR = "yyyy年MM月dd日";

//默认显示简体中文日期时间的格式

public static final String ZHCN_DATATIMEF_STR = "yyyy年MM月dd日HH时mm分ss秒";

//默认显示简体中文日期时间的格式

public static final String ZHCN_DATATIMEF_STR_4yMMddHHmm = "yyyy年MM月dd日HH时mm分";

private static DateFormat dateFormat = null;

private static DateFormat dateTimeFormat = null;

private static DateFormat zhcnDateFormat = null;

private static DateFormat zhcnDateTimeFormat = null;

static

{

dateFormat = new SimpleDateFormat(DATAFORMAT_STR);

dateTimeFormat = new SimpleDateFormat(DATATIMEF_STR);

zhcnDateFormat = new SimpleDateFormat(ZHCN_DATAFORMAT_STR);

zhcnDateTimeFormat = new SimpleDateFormat(ZHCN_DATATIMEF_STR);

}

private static DateFormat getDateFormat(String formatStr)

{

if (formatStr.equalsIgnoreCase(DATAFORMAT_STR))

{

return dateFormat;

}

else

if (formatStr.equalsIgnoreCase(DATATIMEF_STR))

{

return dateTimeFormat;

}

else

if (formatStr.equalsIgnoreCase(ZHCN_DATAFORMAT_STR))

{

return zhcnDateFormat;

}

else

if (formatStr.equalsIgnoreCase(ZHCN_DATATIMEF_STR))

{

return zhcnDateTimeFormat;

}

else

{

return new SimpleDateFormat(formatStr);

}

}

/**

* 按照默认显示日期时间的格式"yyyy-MM-dd HH:mm:ss",转化dateTimeStr为Date类型

* dateTimeStr必须是"yyyy-MM-dd HH:mm:ss"的形式

* @param dateTimeStr

* @return

*/

public static Date getDate(String dateTimeStr)

{

return getDate(dateTimeStr, DATATIMEF_STR);

}

/**

* 按照默认formatStr的格式,转化dateTimeStr为Date类型

* dateTimeStr必须是formatStr的形式

* @param dateTimeStr

* @param formatStr

* @return

*/

public static Date getDate(String dateTimeStr, String formatStr)

{

try

{

if (dateTimeStr == null || dateTimeStr.equals(""))

{

return null;

}

DateFormat sdf = getDateFormat(formatStr);

java.util.Date d = sdf.parse(dateTimeStr);

return d;

}

catch (ParseException e)

{

throw new RuntimeException(e);

}

}

/**

* 将YYYYMMDD转换成Date日期

* @param date

* @return

* @throws BusinessException

*/

public static Date transferDate(String date) throws Exception

{

if (date == null || date.length() < 1)

return null;

if (date.length() != 8)

throw new Exception("日期格式错误");

String con = "-";

String yyyy = date.substring(0, 4);

String mm = date.substring(4, 6);

String dd = date.substring(6, 8);

int month = Integer.parseInt(mm);

int day = Integer.parseInt(dd);

if (month < 1 || month > 12 || day < 1 || day > 31)

throw new Exception("日期格式错误");

String str = yyyy + con + mm + con + dd;

return DateUtil.getDate(str, DateUtil.DATAFORMAT_STR);

}

/**

* 将YYYY-MM-DD日期转换成yyyymmdd格式字符串

* @param date

* @return

*/

public static String getYYYYMMDDDate(Date date)

{

if (date == null)

return null;

String yyyy = getYear(date) + "";

String mm = getMonth(date) + "";

String dd = getDay(date) + "";

mm = StringUtil.rightAlign(mm, 2, "0");

dd = StringUtil.rightAlign(dd, 2, "0");

return yyyy + mm + dd;

}

/**

* 将YYYY-MM-DD日期转换成YYYYMMDDHHMMSS格式字符串

* @param date

* @return

*/

public static String getYYYYMMDDHHMMSSDate(Date date)

{

if (date == null)

return null;

String yyyy = getYear(date) + "";

String mm = getMonth(date) + "";

String dd = getDay(date) + "";

String hh = getHour(date) + "";

String min = getMin(date) + "";

String ss = getSecond(date) + "";

mm = StringUtil.rightAlign(mm, 2, "0");

dd = StringUtil.rightAlign(dd, 2, "0");

hh = StringUtil.rightAlign(hh, 2, "0");

min = StringUtil.rightAlign(min, 2, "0");

ss = StringUtil.rightAlign(ss, 2, "0");

return yyyy + mm + dd + hh + min + ss;

}

/**

* 将YYYY-MM-DD日期转换成yyyymmdd格式字符串

* @param date

* @return

*/

public static String getYYYYMMDDDate(String date)

{

return getYYYYMMDDDate(getDate(date, DATAFORMAT_STR));

}

/**

* 将Date转换成字符串“yyyy-mm-dd hh:mm:ss”的字符串

* @param date

* @return

*/

public static String dateToDateString(Date date)

{

return dateToDateString(date, DATATIMEF_STR);

}

/**

* 将Date转换成formatStr格式的字符串

* @param date

* @param formatStr

* @return

*/

public static String dateToDateString(Date date, String formatStr)

{

DateFormat df = getDateFormat(formatStr);

return df.format(date);

}

/**

* 返回一个yyyy-MM-dd HH:mm:ss 形式的日期时间字符串中的HH:mm:ss

* @param dateTime

* @return

*/

public static String getTimeString(String dateTime)

{

return getTimeString(dateTime, DATATIMEF_STR);

}

/**

* 返回一个formatStr格式的日期时间字符串中的HH:mm:ss

* @param dateTime

* @param formatStr

* @return

*/

public static String getTimeString(String dateTime, String formatStr)

{

Date d = getDate(dateTime, formatStr);

String s = dateToDateString(d);

return s.substring(DATATIMEF_STR.indexOf('H'));

}

/**

* 获取当前日期yyyy-MM-dd的形式

* @return

*/

public static String getCurDate()

{

//return dateToDateString(new Date(),DATAFORMAT_STR);

return dateToDateString(Calendar.getInstance().getTime(), DATAFORMAT_STR);

}

/**

* 获取当前日期yyyy年MM月dd日的形式

* @return

*/

public static String getCurZhCNDate()

{

return dateToDateString(new Date(), ZHCN_DATAFORMAT_STR);

}

/**

* 获取当前日期时间yyyy-MM-dd HH:mm:ss的形式

* @return

*/

public static String getCurDateTime()

{

return dateToDateString(new Date(), DATATIMEF_STR);

}

/**

* 获取当前日期时间yyyy年MM月dd日HH时mm分ss秒的形式

* @return

*/

public static String getCurZhCNDateTime()

{

return dateToDateString(new Date(), ZHCN_DATATIMEF_STR);

}

/**

* 获取日期d的days天后的一个Date

* @param d

* @param days

* @return

*/

public static Date getInternalDateByDay(Date d, int days)

{

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

now.add(Calendar.DATE, days);

return now.getTime();

}

public static Date getInternalDateByMon(Date d, int months)

{

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

now.add(Calendar.MONTH, months);

return now.getTime();

}

public static Date getInternalDateByYear(Date d, int years)

{

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

now.add(Calendar.YEAR, years);

return now.getTime();

}

public static Date getInternalDateBySec(Date d, int sec)

{

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

now.add(Calendar.SECOND, sec);

return now.getTime();

}

public static Date getInternalDateByMin(Date d, int min)

{

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

now.add(Calendar.MINUTE, min);

return now.getTime();

}

public static Date getInternalDateByHour(Date d, int hours)

{

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

now.add(Calendar.HOUR_OF_DAY, hours);

return now.getTime();

}

/**

* 根据一个日期字符串,返回日期格式,目前支持4种

* 如果都不是,则返回null

* @param DateString

* @return

*/

public static String getFormateStr(String DateString)

{

String patternStr1 = "[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}"; //"yyyy-MM-dd"

String patternStr2 = "[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}\\s[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}"; //"yyyy-MM-dd HH:mm:ss";

String patternStr3 = "[0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日";//"yyyy年MM月dd日"

String patternStr4 = "[0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日[0-9]{1,2}时[0-9]{1,2}分[0-9]{1,2}秒";//"yyyy年MM月dd日HH时mm分ss秒"

Pattern p = Pattern.compile(patternStr1);

Matcher m = p.matcher(DateString);

boolean b = m.matches();

if (b)

return DATAFORMAT_STR;

p = Pattern.compile(patternStr2);

m = p.matcher(DateString);

b = m.matches();

if (b)

return DATATIMEF_STR;

p = Pattern.compile(patternStr3);

m = p.matcher(DateString);

b = m.matches();

if (b)

return ZHCN_DATAFORMAT_STR;

p = Pattern.compile(patternStr4);

m = p.matcher(DateString);

b = m.matches();

if (b)

return ZHCN_DATATIMEF_STR;

return null;

}

/**

* 将一个"yyyy-MM-dd HH:mm:ss"字符串,转换成"yyyy年MM月dd日HH时mm分ss秒"的字符串

* @param dateStr

* @return

*/

public static String getZhCNDateTime(String dateStr)

{

Date d = getDate(dateStr);

return dateToDateString(d, ZHCN_DATATIMEF_STR);

}

/**

* 将一个"yyyy-MM-dd"字符串,转换成"yyyy年MM月dd日"的字符串

* @param dateStr

* @return

*/

public static String getZhCNDate(String dateStr)

{

Date d = getDate(dateStr, DATAFORMAT_STR);

return dateToDateString(d, ZHCN_DATAFORMAT_STR);

}

/**

* 将dateStr从fmtFrom转换到fmtTo的格式

* @param dateStr

* @param fmtFrom

* @param fmtTo

* @return

*/

public static String getDateStr(String dateStr, String fmtFrom, String fmtTo)

{

Date d = getDate(dateStr, fmtFrom);

return dateToDateString(d, fmtTo);

}

/**

* 比较两个"yyyy-MM-dd HH:mm:ss"格式的日期,之间相差多少毫秒,time2-time1

* @param time1

* @param time2

* @return

*/

public static long compareDateStr(String time1, String time2)

{

Date d1 = getDate(time1);

Date d2 = getDate(time2);

return d2.getTime() - d1.getTime();

}

/**

* 将小时数换算成返回以毫秒为单位的时间

* @param hours

* @return

*/

public static long getMicroSec(BigDecimal hours)

{

BigDecimal bd;

bd = hours.multiply(new BigDecimal(3600 * 1000));

return bd.longValue();

}

/**

* 获取Date中的分钟

* @param d

* @return

*/

public static int getMin(Date d)

{

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

return now.get(Calendar.MINUTE);

}

/**

* 获取Date中的小时(24小时)

* @param d

* @return

*/

public static int getHour(Date d)

{

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

return now.get(Calendar.HOUR_OF_DAY);

}

/**

* 获取Date中的秒

* @param d

* @return

*/

public static int getSecond(Date d)

{

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

return now.get(Calendar.SECOND);

}

/**

* 获取xxxx-xx-xx的日

* @param d

* @return

*/

public static int getDay(Date d)

{

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

return now.get(Calendar.DAY_OF_MONTH);

}

/**

* 获取月份,1-12月

* @param d

* @return

*/

public static int getMonth(Date d)

{

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

return now.get(Calendar.MONTH) + 1;

}

/**

* 获取19xx,20xx形式的年

* @param d

* @return

*/

public static int getYear(Date d)

{

Calendar now = Calendar.getInstance(TimeZone.getDefault());

now.setTime(d);

return now.get(Calendar.YEAR);

}

/**

* 得到d的上个月的年份+月份,如200505

* @return

*/

public static String getYearMonthOfLastMon(Date d)

{

Date newdate = getInternalDateByMon(d, -1);

String year = String.valueOf(getYear(newdate));

String month = String.valueOf(getMonth(newdate));

return year + month;

}

/**

* 得到当前日期的年和月如200509

* @return String

*/

public static String getCurYearMonth()

{

Calendar now = Calendar.getInstance(TimeZone.getDefault());

String DATE_FORMAT = "yyyyMM";

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(DATE_FORMAT);

sdf.setTimeZone(TimeZone.getDefault());

return (sdf.format(now.getTime()));

}

public static Date getNextMonth(String year, String month)

{

String datestr = year + "-" + month + "-01";

Date date = getDate(datestr, DATAFORMAT_STR);

return getInternalDateByMon(date, 1);

}

public static Date getLastMonth(String year, String month)

{

String datestr = year + "-" + month + "-01";

Date date = getDate(datestr, DATAFORMAT_STR);

return getInternalDateByMon(date, -1);

}

/**

* 得到日期d,按照页面日期控件格式,如"2001-3-16"

* @param d

* @return

*/

public static String getSingleNumDate(Date d)

{

return dateToDateString(d, DATAFORMAT_STR);

}

/**

* 得到d半年前的日期,"yyyy-MM-dd"

* @param d

* @return

*/

public static String getHalfYearBeforeStr(Date d)

{

return dateToDateString(getInternalDateByMon(d, -6), DATAFORMAT_STR);

}

/**

* 得到当前日期D的月底的前/后若干天的时间,<0表示之前,>0表示之后

* @param d

* @param days

* @return

*/

public static String getInternalDateByLastDay(Date d, int days)

{

return dateToDateString(getInternalDateByDay(d, days), DATAFORMAT_STR);

}

/**

* 日期中的年月日相加

*  @param field int  需要加的字段  年 月 日

* @param amount int 加多少

* @return String

*/

public static String addDate(int field, int amount)

{

int temp = 0;

if (field == 1)

{

temp = Calendar.YEAR;

}

if (field == 2)

{

temp = Calendar.MONTH;

}

if (field == 3)

{

temp = Calendar.DATE;

}

String Time = "";

try

{

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Calendar cal = Calendar.getInstance(TimeZone.getDefault());

cal.add(temp, amount);

Time = sdf.format(cal.getTime());

return Time;

}

catch (Exception e)

{

e.printStackTrace();

return null;

}

}

/**

* 获得系统当前月份的天数

* @return

*/

public static int getCurentMonthDay()

{

Date date = Calendar.getInstance().getTime();

return getMonthDay(date);

}

/**

* 获得指定日期月份的天数

* @return

*/

public static int getMonthDay(Date date)

{

Calendar c = Calendar.getInstance();

c.setTime(date);

return c.getActualMaximum(Calendar.DAY_OF_MONTH);

}

/**

* 获得指定日期月份的天数  yyyy-mm-dd

* @return

*/

public static int getMonthDay(String date)

{

Date strDate = getDate(date, DATAFORMAT_STR);

return getMonthDay(strDate);

}

public static String getStringDate(Calendar cal)

{

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

return format.format(cal.getTime());

}

/**

* @param args

*/

public static void main(String[] args)

{

// //System.out.print(DateUtil.getDate("04:04:04","HH:mm:ss"));

// System.out.print("\n"+DateUtil.getCurZhCNDateTime());

// System.out.print("\n"+getFormateStr(DateUtil.getCurDate()));

// System.out.print("\n"+compareDateStr("1900-1-1 1:1:2","1900-1-1 1:1:3"));

// System.out.print("\n"+getDay(new Date()));

// System.out.print("\n"+getMonth(new Date()));

// System.out.print("\n"+getYear(new Date()));

// System.out.print("\n"+getMin(new Date()));

//// System.out.print("\n"+new Date().getSeconds());

/*Date d1 = new Date(2007,11,30);

Date d2 = new Date(2007,12,1);

if(d2.compareTo(d1)>0){

   System.out.println("d2大于d1");

}else{

   System.out.println("d2小于d1");

}*/

 

System.out.println(addDate(1, 1));

System.out.println(addDate(2, 1));

System.out.println(addDate(3, 1));

System.out.println(getYYYYMMDDHHMMSSDate(new Date()));

System.out.println(getCurentMonthDay());

}

}

分享到:
评论

相关推荐

    javadate工具类

    date工具类

    java Date工具类

    最近由于项目需要写了一些关于操作Date的代码,建议把经常需要的工具类保存下来,以备不时之需

    java的Date工具类

    这是本人自己整理的java中的Date工具类,包含了常用的时间格式化方法和转换方法;在工作中使用起来还是蛮方便的;希望对大家有帮助!

    java Date操作工具类

    java Date操作工具类,对日期的各种基本的操作

    Date日期操作工具类

    Date日期处理的工具类,包括日期格式化,字符串转换成日期,对日期的【时分秒年月日】进行加/减,获取时间差,计算两个日期之间相差的天数,等各种对日期的操作

    java常用工具类

    java常用工具类,json,date,http,kafka,md5,线程池

    Java 日期比较工具类

    Java 日期比较工具类 各种日期操作及计算( 获取两个日期 间隔天数 间隔月数 格式化日期 )

    java常用类解析及示例及一些工具类源代码

    主要讲解了System类、Object类、Arrays类、Cloneable接口、IO系统输入输出类及装饰类、IO系统文本读写工具类、IO系统二进制读写工具类、对象序列化工具类、File类及文件搜索工具类、java异常机制及自定义异常类、...

    java常用的工具类

    主要包含的工具: 1、敏感字的过滤 2、文件的各种操作 3、图片的验证码,图片裁剪 4、获取客户端的ip 5、md5加密,加密解密 6、对象的clone 7、获取操作系统的版本 8、String的操作 9、Date的操作 10、...

    java日期工具类

    java日期工具类,自定义日期输出格式,日期比较,获取几日前或几日后日期等

    java常用工具类的使用

    在Java开发类库中,提供了很多工具类,我们即将学习最常见的工具类,比如对日期的操作,对集合的操作等。具体更多的工具类,请参考JavaDoc文档。 2. java.util.Date类 Date类包装了毫秒值,毫秒值表示自1970年1月1...

    JAVA java工具类大全

    8:DateUtility 日期、时间处理的工具类 9:EnameUtils 10:Escape 11:FileTool 文件工具类 12:HttpRequestUtils 13:HttpUtils 14:IdGenerator 15:ImageCut 图片剪切 16:ImageUtils 17:JsonTool 18:...

    DateUtils Java时间工具类

    非常好用的Date工具类 1、计算两个日期之间相差的天数 2、判断日期是否为周六日 3、获取当前周开始日期 4、获取当前周结束日期 5、判断年份是否是闰年 6、根据年份和月份计算天数 7、判断日期为该年的第几周 等等

    String和Date工具类

    String工具类:校验是否包含表情、字符串切割、过滤空白字符、过滤特殊字符(换行符、回车符、制表符) Date工具类:时间格式化转化、时间获取、时间加减(年月日时分)、数字时间校验

    Java8的LocalDateTime工具类,包含一些比较常用的功能。

    LocalDateTime常用操作工具类,主要包括的工具如下: - LocalDateTime转为Date - Date转为LocalDateTime - LocalDateTime转为String(yyyy-MM-dd HH:mm:ss) - LocalDateTime转为String - String转为LocalDateTime -...

    java工具类——date

    日期的date格式和string格式的互相转换

    最全Java常用日期处理工具类

    该Java工具类调用时只需要类名.方法即可调用。 1.返回纯数字的年月日时分秒时间戳:20191008103656 4.在日期上增加数个整月 5.在日期上增加天数 6.在日期上增加n分钟 7.两个时间相差距离多少天多少小时...

Global site tag (gtag.js) - Google Analytics