记录一下常用的日期方法
- 获取某个时间的方法 这里提供一段方法供大家参考
private static Date getFormatDate(String updated) throws Exception{
String partOfDate = updated.substring(3);
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
if (updated.substring(0, 2).equals("今天")) {
calendar.set(Calendar.HOUR_OF_DAY, 0);
} else if (updated.substring(0, 2).equals("昨天")) {
calendar.set(Calendar.HOUR_OF_DAY, -1);
} else if (updated.substring(0, 2).equals("明天")) {
calendar.add(Calendar.DATE, 1);
}
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
SimpleDateFormat todaySdf = new SimpleDateFormat("yyyy-MM-dd");
String today = todaySdf.format(calendar.getTime());
String finalString = today + " " + partOfDate;
SimpleDateFormat finalSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return finalSdf.parse(finalString);
}
public static void main(String[] args) {
Date nineFifteenDate = getFormatDate("今天 9:15:00");
Date tomorrowDate = getFormatDate("明天 09:15:00");
}
返回的结果就是:
- Wed Jan 27 09:15:00 IRKT 2021
- Wed Jan 28 09:15:00 IRKT 2021
这里补充一个知识点:add和set的却别
- set 表示直接设值 不考虑原来的时间值
- add 表示在原有的基础上进行加减value
- calendar.add(Calendar.DAY_OF_MONTH, 2);//表示在默认的当前日期上加两天
- calendar.set(Calendar.DAY_OF_MONTH,2);//表示直接将日期设置为本月2号
- 日期比较之间的比较 常用的两种方法:
- Date:before/after判断
Date threeFifteenDate = getFormatDate("今天 15:15");
Date tomorrowDate = getFormatDate("明天 09:15:00");
if (threeFifteenDate.before(tomorrowDate)) {
true;
}
if (threeFifteenDate.after(tomorrowDate)) {
false;
}
before:在日期之前。 after:在日期之后。
- String:compareTo判断 需要将日期转换String格式。
SimpleDateFormat finalSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String beginTime = finalSdf.format(new Date());
if (beginTime.compareTo(endTime) > 0) {}
返回正值是代表左侧日期大于参数日期,反之亦然,相同为0。日期格式必须一致
- 日期之间的计算(相差年、月、日、时、分、秒) 方法很多种,这里提供一种供大家参考。
public static String calculateDateTime(Date beginTime, Date endTime) {
long begin = beginTime.getTime();
long end = endTime.getTime();
long day = diff / (24 * 60 * 60 * 1000);
long hour = diff / (60 * 60 * 1000) - day * 24;
long min = diff / (60 * 1000) - day * 24 * 60 - hour * 60;
long sec = diff / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60;
System.out.println("beginTime 与 endTime 相差 " + day + "天" + hour + "小时" + min + "分" + sec + "秒");
}
计算两个时间相差多少秒:
long second = beginTime.getTime() - endTime.getTime() / 1000;
- 获取当前的时间戳 提供4种获取方式:
long timeStamp1 = System.currentTimeMillis();
Date date = new Date();
long timeStamp2 = date.getTime();
Calendar calendar = Calendar.getInstance();
long timeStamp3 = calendar.getTimeInMillis();
Clock clock = Clock.systemUTC();
long timeStamp4 = clock.millis();
- 记录程序运行耗时
long beginTime = System.currentTimeMillis();
long endTime = System.currentTimeMillis();
Calendar c = Calendar.getInstance();
c.setTimeInMillis(endTime - startTime);
logger.info("耗时: " + c.get(Calendar.MINUTE) + "分 " +
c.get(Calendar.SECOND) + "秒 ");
到此先记录这些方式,感谢各位观看。有不对的地方或者有更好的方法还请大佬们指教。后期在用到日期相关的方法再记录。