两个日期做减法,返回类型是Object,参数中可以定义返回类型的具体类型,可以定义差多少天,差多少小时等等,基本上用到可能性不是太大,但是相对还是比较好用的
import java.math.BigDecimal;
import java.util.Date;
import org.apache.commons.lang.StringUtils;
/**
*
* desc: 日期差值计算工具类
*
* @author <a href="mailto:yourmail">Hegege</a>
* @version CVS $Revision: 1.1 $ $Date: 2005/12/05 08:42:21 $
*/
public class DateOperationUtil {
public static final String OUTPUT_TYPE_STRING = "String";
public static final String OUTPUT_TYPE_DOUBLE = "Double";
public static final String OUTPUT_TYPE_FLOAT = "Float";
public static final String OUTPUT_TYPE_INTEGER = "Integer";
public static final String CALCULATE_TYPE_DAY = "day";
public static final String CALCULATE_TYPE_HOUR = "hour";
public static final String CALCULATE_TYPE_MINUTE = "minute";
public static final String CALCULATE_TYPE_SECOND = "second";
/**
* @param args
*/
public static void main(String[] args) {
Date d1 = new Date();
d1.setYear(2011-1900);
d1.setMonth(11-1);
d1.setDate(27);
d1.setHours(23);
d1.setMinutes(55);
d1.setSeconds(35);
Date d2 = new Date();
d2.setYear(2011-1900);
d2.setMonth(12-1);
d2.setDate(3);
d2.setHours(12);
d2.setMinutes(11);
d2.setSeconds(1);
// System.out.println(doDateMinusValue(d1, d2, OUTPUT_TYPE_STRING, 3, CALCULATE_TYPE_MINUTE));
System.out.println(doDateMinusValue(d1, d2, OUTPUT_TYPE_INTEGER, 3, CALCULATE_TYPE_HOUR));
}
/**
* 两个日期的差值,d2-d1
* returnType:返回类型,默认为string
* f:小数位数,-1为默认全部(建议f不大于8)默认为2
* calculateType:换算单位(天,小时,分钟,秒)默认为天
*/
public static Object doDateMinusValue(Date d1,Date d2,String returnType,int f,String calculateType){
long l1 = d1.getTime();
long l2 = d2.getTime();
long ll = l2-l1;
if(ll>=0){
if(StringUtils.isNotEmpty(returnType)){
if(OUTPUT_TYPE_STRING.equals(returnType)){
return returnString(f, calculateType, ll);
}else if(OUTPUT_TYPE_DOUBLE.equals(returnType)){
return returnDouble(calculateType, ll);
}else if(OUTPUT_TYPE_FLOAT.equals(returnType)){
return returnFloat(calculateType, ll);
}else if(OUTPUT_TYPE_INTEGER.equals(returnType)){
return returnInteger(calculateType, ll);
}else{
}
}else{
}
}else{
return null;
}
return returnType;
}
private static Object returnInteger(String calculateType, long l) {
//如果是按照整数来计算,那么应该是有尾数就进一位,而不是四舍五入或者只去整数位
if(StringUtils.isNotEmpty(calculateType)){
if(CALCULATE_TYPE_DAY.equals(calculateType)){
return returnInteger(l, 1000*60*60*24l);
}else if(CALCULATE_TYPE_HOUR.equals(calculateType)){
return returnInteger(l, 1000*60*60l);
}else if(CALCULATE_TYPE_MINUTE.equals(calculateType)){
return returnInteger(l, 1000*60l);
}else if(CALCULATE_TYPE_SECOND.equals(calculateType)){
return returnInteger(l, 1000l);
}else{
return returnInteger(l, 1000*60*60*24l);
}
}else{
return returnInteger(l, 1000*60*60*24l);
}
}
private static Object returnFloat(String calculateType, long ll) {
if(StringUtils.isNotEmpty(calculateType)){
if(CALCULATE_TYPE_DAY.equals(calculateType)){
float ff = ll/(float)(1000*60*60*24);
return Float.valueOf(ff);
}else if(CALCULATE_TYPE_HOUR.equals(calculateType)){
float ff = ll/(float)(1000*60*60);
return Float.valueOf(ff);
}else if(CALCULATE_TYPE_MINUTE.equals(calculateType)){
float ff = ll/(float)(1000*60);
return Float.valueOf(ff);
}else if(CALCULATE_TYPE_SECOND.equals(calculateType)){
float ff = ll/(float)(1000);
return Float.valueOf(ff);
}else{
float ff = ll/(float)(1000*60*60*24);
return Float.valueOf(ff);
}
}else{
float ff = ll/(float)(1000*60*60*24);
return Float.valueOf(ff);
}
}
private static Object returnDouble(String calculateType, long l) {
if(StringUtils.isNotEmpty(calculateType)){
if(CALCULATE_TYPE_DAY.equals(calculateType)){
return returnDouble(l, 1000*60*60*24l);
}else if(CALCULATE_TYPE_HOUR.equals(calculateType)){
return returnDouble(l, 1000*60*60l);
}else if(CALCULATE_TYPE_MINUTE.equals(calculateType)){
return returnDouble(l, 1000*60l);
}else if(CALCULATE_TYPE_SECOND.equals(calculateType)){
return returnDouble(l, 1000l);
}else{
return returnDouble(l, 1000*60*60*24l);
}
}else{
return returnDouble(l, 1000*60*60*24l);
}
}
private static Object returnString(int f, String calculateType, long l) {
if(StringUtils.isNotEmpty(calculateType)){
if(CALCULATE_TYPE_DAY.equals(calculateType)){
return returnString(f, l, 1000*60*60*24l);
}else if(CALCULATE_TYPE_HOUR.equals(calculateType)){
return returnString(f, l, 1000*60*60l);
}else if(CALCULATE_TYPE_MINUTE.equals(calculateType)){
return returnString(f, l, 1000*60l);
}else if(CALCULATE_TYPE_SECOND.equals(calculateType)){
return returnString(f, l, 1000l);
}else{
return returnString(f, l, 1000*60*60*24l);
}
}else{//默认为天计算
return returnString(f, l, 1000*60*60*24l);
}
}
private static Double returnDouble(long l,long p){
float ff = l/(float)(1000*60*60*24);
BigDecimal bd = new BigDecimal(ff);
double ddd = bd.doubleValue();
return Double.valueOf(ddd);
}
private static String returnString(int f,long l,long p){
float ff = l/(float)(p);
BigDecimal bd = new BigDecimal(ff);
String sss = bd.toEngineeringString();
return formatString(f,sss);
}
private static Integer returnInteger(long l,long p){
Float ff = l/(float)(1000*60*60*24);
if(ff.floatValue()>Float.valueOf(ff.intValue()).floatValue()){
return Integer.valueOf(ff.intValue()+1);
}else{
return Integer.valueOf(ff.intValue());
}
}
private static String formatString(int f, String sss) {
if(f==-1){
return sss;
}else if(f==0){
if(sss.indexOf(".")>0){
return sss.substring(0, sss.indexOf(".")+1);
}else{
return sss;
}
}else{
if(sss.indexOf(".")+f+1>=sss.length()){
return sss;
}else{
return sss.substring(0,sss.indexOf(".")+f+1);
}
}
}
}
分享到:
相关推荐
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
Unity3d 3D模型描边代码 懒人直接上代码
原文链接:https://alading.blog.csdn.net/article/details/141710476 包含功能: 经理管理:负责经理信息维护与权限分配,确保管理层操作的安全性和高效性。 员工管理:管理员工信息,包括招聘、离职、考勤及权限设置,优化人力资源配置。 商品分类管理:对商品进行科学分类,便于商品检索与管理,提升顾客购物体验。 商品信息管理:维护商品详细信息,如名称、价格、描述等,确保信息准确无误。 商品入库管理:监控商品入库流程,记录库存变化,实现库存精准管理。 商品销售管理:处理销售事务,包括销售记录、退货处理,支持销售业绩分析。 缺货提醒管理:自动检测库存水平,及时发出缺货警告,保障商品供应连续性。 商品收银管理:处理交易结算,支持多种支付方式,确保收银过程快速准确。 供应商管理:维护供应商信息,评估合作效果,优化供应链,保证商品质量与供应稳定性。
MATLAB实现工业PCB电路板缺陷识别和检测【图像处理实战】项目详情请参见:https://handsome-man.blog.csdn.net/article/details/130493170 PCB板检测的大概流程如下:首先存储一个标准PCB板图像作为良好板材的参考标准,然后将待检测的PCB板图像进行处理,比较与标准PCB图像的差异,根据差异的情况来判断缺陷类型。 项目代码可顺利编译运行~
Jupyter-Notebook
1991-2021年中国科技统计年鉴-最新数据发布.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
BMI270 驱动开发程序
Jupyter-Notebook
Jupyter-Notebook
Jupyter-Notebook
上市公司基本资料及行业分类(2020)+员工构成数据大全(2006-2020)-最新发布.zip
安慰剂检验代码与数据文章-最新研究成果.zip
原文链接:https://alading.blog.csdn.net/article/details/141678636 包含功能: 用户管理:负责系统用户的注册、登录、权限分配及个人信息管理。 供应商管理:维护供应商信息,包括添加、编辑、删除供应商资料及合作状态。 商品分类管理:创建、修改和删除商品分类,便于商品归类与查找。 商品信息管理:管理商品详情,如添加新品、编辑商品属性、价格及库存量。 采购入库管理:记录采购订单详情,处理入库操作,更新库存数量。 销售信息管理:记录销售订单,追踪销售数据,支持销售分析与报表生成。 赠品入库管理:管理赠品入库流程,记录赠品信息,关联促销活动。 退货入库管理:处理客户退货,记录退货详情,恢复库存数量。 其他入库管理:管理非采购、非赠品的入库情况,如调拨入库等。 购买订单管理:跟踪客户购买订单状态,从下单到发货的全流程管理。 赠送信息管理:管理赠品发放规则,记录赠送活动执行情况。 盘点信息管理:定期进行库存盘点,记录盘点结果,调整库存差异。
演示:https://blog.csdn.net/m0_54925305/article/details/143660348?spm=1001.2014.3001.5501
Jupyter-Notebook
shiahdifhiahfiqefiwhfi weifwijfiwqufiqweefijeq0jfe
用java实现了全部23种设计模式,代码简单易懂,注释详细,仅作学习使用——hrh。
北大新农研究院联合阿里县域乡村指数(2018)-已更至最新.zip