1. 计算小时差
public static final Long ONE_HOUR_TIME_LONG = 60 * 60 * 1000L;
@Test
public void hours() throws ParseException {
Date date1 = new Date();
// org.apache.commons.lang3.time.DateUtils;
Date date2 = DateUtils.parseDate("2024-01-24 18:35:00", "yyyy-MM-dd HH:mm:ss");
long times = date1.getTime() - date2.getTime();
double hours = times / (ONE_HOUR_TIME_LONG * 1.0);
Double divide = divide(times, ONE_HOUR_TIME_LONG, 2);
System.out.println(hours + ", " + divide);
}
/**
* 除法运算
*
* @param dividend 被除数,分子
* @param divisor 除数,分母
* @param scale 精度,小数位
*/
public static Double divide(Long dividend, Long divisor, Integer scale) {
if (dividend == null || divisor == null || divisor == 0L) {
return 0D;
}
BigDecimal b1 = BigDecimal.valueOf(dividend);
BigDecimal b2 = BigDecimal.valueOf(divisor);
return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
1.2 百分数
System.out.println("percent: " + toPercent(1.234));
public static String toPercent(Double value) {
DecimalFormat decimalFormat = new DecimalFormat("#0.00%");
return decimalFormat.format(value);
}
1.3 千分位
public static String toThousands(Long value) {
DecimalFormat decimalFormat = new DecimalFormat("#,###");
return decimalFormat.format(value);
}
2. 计算时间差
@Test
public void duration() throws ParseException {
Date date1 = new Date();
Date date2 = DateUtils.parseDate("2024-01-23 18:35:00", "yyyy-MM-dd HH:mm:ss");
long times = date1.getTime() - date2.getTime();
long day = times / (24 * 60 * 60 * 1000);
long hour = (times / (60 * 60 * 1000) - day * 24);
long min = ((times / (60 * 1000)) - day * 24 * 60 - hour * 60);
long s = (times / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
System.out.println(day + "天" + hour + "小时" + min + "分" + s + "秒");
}
打印结果:
1天1小时11分14秒
3. 计算日期
@Test
public void beforeDate() {
String before = DateUtil.beforeDate("2024-01-23", "2024-01-25");
System.out.println(before);
}
public class DateUtil {
public static final String DEFAULT_DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";
/**
* 调用示例:DateUtil.beforeDate("2024-01-23", "2024-01-25")
*/
public static String beforeDate(String dateStartStr, String dateEndStr) {
Date date = parseDateBefore(dateStartStr, dateEndStr);
return parseDate(date);
}
public static Date parseDateBefore(String dateStartStr, String dateEndStr) {
try {
Date dateStart = DateUtils.parseDate(dateStartStr, DEFAULT_DATE_FORMAT);
Date dateEnd = DateUtils.parseDate(dateEndStr, DEFAULT_DATE_FORMAT);
long times = dateEnd.getTime() - dateStart.getTime();
Date beforeDate = new Date(dateStart.getTime() - times);
return beforeDate;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
public static String parseDate(Date date) {
return parseDateByFormat(date, DEFAULT_DATE_FORMAT);
}
private static String parseDateByFormat(Date date, String dateFormat) {
if (date == null) {
return null;
}
SimpleDateFormat format = new SimpleDateFormat(dateFormat);
return format.format(date);
}
}
【信息由网络或者个人提供,如有涉及版权请联系COOY资源网邮箱处理】
© 版权声明
本平台(www.cooy.cn)的一切软件、教程及内容信息仅限用于学习和研究,付费仅为收集整理归类费用;
不得将上述内容用于商业或者非法用途,否则一切后果用户自行承担负责。本平台资源、内容、信息均来自来自用户上传,版权争议及其他问题与本平台无关。
您必须在下载后的24个小时之内从您的电脑或手机中彻底删除上述下载内容,如果您喜欢该程序或内容,请支持正版以获取更好的服务。我们非常重视版权问题,如有侵权请发送邮件至下方邮件(655465@qq.com),敬请谅解!
如发现违法违规内容,请联系下方邮箱举报,我们收到后将会第一时间处理。
THE END
暂无评论内容