您的位置:首页 > 编程语言 > Java开发

14个常用的日期方法

2017-02-08 15:45 746 查看

前言

最近总和日期打交道,每次去写太麻烦,这里整理了14个日期常用的方法,可直接使用。

常量

//======================日期格式化常量=====================//

public static final String YYYY_MM_DDHHMMSS = "yyyy-MM-dd HH:mm:ss";
public static final String YYYY_MM_DD = "yyyy-MM-dd";
public static final String YYYY_MM = "yyyy-MM";
public static final String YYYY = "yyyy";

public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss";
public static final String YYYYMMDD = "yyyyMMdd";
public static final String YYYYMM = "yyyyMM";

public static final String YYYYMMDDHHMMSS_1 = "yyyy/MM/dd HH:mm:ss";
public static final String YYYY_MM_DD_1 = "yyyy/MM/dd";
public static final String YYYY_MM_1 = "yyyy/MM";

1.获取当前时间

/**
*
* 获取当前时间
* @return
* @see [类、类#方法、类#成员]
*/
public static Date getCurrentDate()
{
return new Date();
}

2.获取当前系统时间字符串

/**
*
* 获取当前系统时间字符串
* @return
* @see [类、类#方法、类#成员]
*/
public static String getCurrDateToStr()
{
return dateToStr(getCurrentDate(),YYYY_MM_DDHHMMSS);
}

3.以毫秒为单位返回当前时间

/**
*
* 以毫秒为单位返回当前时间
* @return
* @see [类、类#方法、类#成员]
*/
public static long getCurrentTimeMillis()
{
return System.currentTimeMillis();
}

4.自定义取值,Date类型转为String类型

/**
*
* 自定义取值,Date类型转为String类型
* @param date 日期
* @param pattern 格式化常量
* @return
* @see [类、类#方法、类#成员]
*/
public static String dateToStr(Date date, String pattern)
{
SimpleDateFormat format = null;

if (null == date)
return null;
format = new SimpleDateFormat(pattern, Locale.getDefault());

return format.format(date);
}

5.自定义取值,String转换为Date

/**
*
* 自定义取值,String转换为Date
* @param str 日期字符串
* @param pattern 格式化常量
* @return
* @see [类、类#方法、类#成员]
*/
public static Date strToDate(String str, String pattern)
{
if (null==str||"".equals(str.trim()))
return null;
SimpleDateFormat format = new SimpleDateFormat(pattern, Locale.getDefault());
try
{
return format.parse(str);
}
catch (ParseException e)
{
return null;
}
}

6.在指定的日期上增加天数

/**
*
* 在指定的日期上增加天数
* @param date 日期
* @param day 天数
* @return
* @see [类、类#方法、类#成员]
*/
public static Date addDay(Date date, int day)
{
if (null == date)
return null;
Calendar calendar = Calendar.getInstance(Locale.getDefault());
calendar.setTime(date);
calendar.add(Calendar.DATE, day);
return calendar.getTime();
}

7.在指定的日期上减去天数

/**
* 在指定的日期上减去天数
*
* @param date 日期
* @param day 天数
* @return
*/
public static Date subDay(Date date, int day)
{
if (null == date)
return null;
Calendar calendar = Calendar.getInstance(Locale.getDefault());
calendar.setTime(date);
calendar.add(Calendar.DATE, -day);
return calendar.getTime();
}

8.为时间增加分钟

/**
*
* 为时间增加分钟
* @param date 日期
* @param minute 分钟
* @return
* @see [类、类#方法、类#成员]
*/
public static String addMinute(Date date, int minute)
{
if (null == date)
return null;
Calendar calendar = Calendar.getInstance(Locale.getDefault());
calendar.setTime(date);
calendar.add(Calendar.MINUTE, minute);
return dateToStr(calendar.getTime(),YYYY_MM_DDHHMMSS);
}

9.为时间减去分钟

/**
*
* 为时间减去分钟
* @param date 日期
* @param minute 分钟
* @return
* @see [类、类#方法、类#成员]
*/
public static String subMinute(Date date, int minute)
{
if (null == date)
return null;
Calendar calendar = Calendar.getInstance(Locale.getDefault());
calendar.setTime(date);
calendar.add(Calendar.MINUTE, -minute);
return dateToStr(calendar.getTime(),YYYY_MM_DDHHMMSS);
}

10.两个日期大小比较

/**
* 两个日期大小比较
*
* @param date1
* @param date2
* @return 后面的日期大的话,返回true ,第一个日期大返回false
* @see [类、类#方法、类#成员]
*/
public static boolean dateLastLarge(String date1, String date2)
{
Date d1 = strToDate(date1,YYYY_MM_DDHHMMSS);
Date d2 = strToDate(date2,YYYY_MM_DDHHMMSS);

return d1.before(d2);
}

11.判断时间是否超过一定的小时数

/**
*
* 判断时间是否超过一定的小时数
* @param date1 较大的时间
* @param date2 较小的时间
* @return 超过返回true,不超过返回false
* @throws Exception
* @see [类、类#方法、类#成员]
*/
public static boolean judgmentDate(String date1, String date2,float h)
throws Exception
{
String time1 = date1.substring(0, date1.lastIndexOf(" "));
String time2 = date1.substring(0, date1.lastIndexOf(" "));

SimpleDateFormat sdf = new SimpleDateFormat(YYYY_MM_DDHHMMSS);

Date start = sdf.parse(date1);

Date end = sdf.parse(date2);

long cha = end.getTime() - start.getTime();

if (cha < 0)
{
if(time1.equals(time2)){
return true;
}else{
return false;
}
}

double result = cha * 1.0 / (1000 * 60 * 60);

if (result >= h)
{

return true;

}
else
{

return false;

}
}

12.获取当前日期往后一定的年数

/**
*
* 获取当前日期往后一定的年数
* @param year 年数
* @return
* @see [类、类#方法、类#成员]
*/
public static String getCurrLastYear(int year)
{
SimpleDateFormat format = new SimpleDateFormat(YYYYMMDD);
Date date = new Date();
Calendar calendar = Calendar.getInstance(Locale.getDefault());
calendar.setTime(date);
calendar.add(Calendar.YEAR, year);
return format.format(calendar.getTime());

}

13计算两个日期之间相差的天数

/**
*
* 计算两个日期之间相差的天数
* @param smdate 较小的时间
* @param bdate 较大的时间
* @return 相差天数
* @throws ParseException
* @see [类、类#方法、类#成员]
*/
public static int daysBetween(Date smdate,Date bdate) throws ParseException
{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
smdate=sdf.parse(sdf.format(smdate));
bdate=sdf.parse(sdf.format(bdate));
Calendar cal = Calendar.getInstance();
cal.setTime(smdate);
long time1 = cal.getTimeInMillis();
cal.setTime(bdate);
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);

return Integer.parseInt(String.valueOf(between_days));
}

14.字符串的日期格式的计算

/**
*
* 字符串的日期格式的计算
* @param smdate 较小的时间
* @param bdate 较大的时间
* @return 相差天数
* @throws ParseException
* @see [类、类#方法、类#成员]
*/
public static int daysBetween(String smdate,String bdate) throws ParseException{
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(smdate));
long time1 = cal.getTimeInMillis();
cal.setTime(sdf.parse(bdate));
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);

return Integer.parseInt(String.valueOf(between_days));
}


资源下载

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息