| 2017.12.2 | java |
1.Java中一个指定日期加上指定天数得到新日期
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main(String[] args) throws ParseException {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // 日期格式
Date date = dateFormat.parse("2015-07-31"); // 指定日期
Date newDate = addDate(date, 20); // 指定日期加上20天
System.out.println(dateFormat.format(date));// 输出格式化后的日期
System.out.println(dateFormat.format(newDate));
}
public static Date addDate(Date date, long day) throws ParseException {
long time = date.getTime(); // 得到指定日期的毫秒数
day = day * 24 * 60 * 60 * 1000; // 要加上的天数转换成毫秒数
time += day; // 相加得到新的毫秒数
return new Date(time); // 将毫秒数转换成日期
}
}
2.java创建Timestamp的几种方式
Timestamp time1 = new Timestamp(System.currentTimeMillis());
Timestamp time2 = new Timestamp(new Date().getTime());
Timestamp time3 = new Timestamp(Calendar.getInstance().getTimeInMillis());
//不建议使用
Timestamp time4 = new Timestamp(2011-1900,11,11,11,11,11,0);
3.Date.compareTo
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Date_compareTo
{
public static void main(String[] args) throws Exception {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date = formatter.parse("2015-12-30");
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(2016, 0, 1);
Date date2 = cal.getTime();
int compareTo = date.compareTo(date2);
System.out.println("compareTo : " + compareTo);
}
}
4.获取某年某月的第一天和最后一天
public static String getFirstDayOfMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DAY_OF_MONTH, cal.getMinimum(Calendar.DATE));
return new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
}
public static String getLastDayOfMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DATE));
return new SimpleDateFormat("yyyy-MM-dd").format(cal.getTime());
}
或者
/**
* 获取月份最后一天.
* @param year
* @param month
* @return
*/
public static Date getLastDayOfMonth(int year, int month) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.add(Calendar.DAY_OF_MONTH, -1);
return calendar.getTime();
}
/**
* 获取月份最后一天.
* @param year
* @param month
* @return
*/
public static String getLastDayOfMonthStr(int year, int month) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(getLastDayOfMonth(year, month));
}
5.Java判断一个时间是否在时间区间内
/**
* 判断当前时间是否在[startTime, endTime]区间,注意时间格式要一致
*
* @param nowTime 当前时间
* @param startTime 开始时间
* @param endTime 结束时间
* @return
* @author jqlin
*/
public static boolean isInvalidDate(Date nowTime, Date startTime, Date endTime) {
if (nowTime.getTime() == startTime.getTime() || nowTime.getTime() == endTime.getTime()) {
return true;
}
Calendar date = Calendar.getInstance();
date.setTime(nowTime);
Calendar begin = Calendar.getInstance();
begin.setTime(startTime);
Calendar end = Calendar.getInstance();
end.setTime(endTime);
if (date.after(begin) && date.before(end)) {
return true;
} else {
return false;
}
}
6.Calendar生成的当前日期会出现毫秒问题
Calendar today = Calendar.getInstance();
today.set(today.get(Calendar.YEAR), today.get(Calendar.MONTH), today.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
如果这样生成今天的日期,会出现毫秒问题,导致和别的日期比较出现偏差,需要加上毫秒设置
today.set(Calendar.MILLISECOND, 0);
7.java判断2个时间相差多少天、多少小时、多少分
/**
* 判断2个时间相差多少天、多少小时、多少分<br>
* <br>
* @param pBeginTime 请假开始时间<br>
* @param pEndTime 请假结束时间<br>
* @return String 计算结果<br>
* @Exception 发生异常<br>
*/
public static String TimeDiff(String pBeginTime, String pEndTime) throws Exception {
format = new SimpleDateFormat("yyyy-MM-dd hh:mm");
Long beginL = format.parse(pBeginTime).getTime();
Long endL = format.parse(pEndTime).getTime();
Long day = (endL - beginL)/86400000;
Long hour = ((endL - beginL)%86400000)/3600000;
Long min = ((endL - beginL)%86400000%3600000)/60000;
return ("实际请假" + day + "小时" + hour + "分钟" + min);
}
更新列表:
2017-12-20 获取某年某月的第一天和最后一天
2018-05-02 Java判断一个时间是否在时间区间内
2018-08-03 java判断2个时间相差多少天、多少小时、多少分
参考文章: