String payTime = "2017-10-26 00:12:49";
String expTime = "25";
int expDay = Integer.parseInt(expTime);
Date datePay = Tools.stringToDate(payTime);
Date dateExp = new Date(datePay.getTime() + 24*60*60*1000 * expDay);
String expDate = Tools.getTimeStrByDate(dateExp);
System.out.println(expDate);
}
简单介绍一下,这是一个获取 从payTime天起,expTime天后的日期的方法,初看没什么问题,但是当expTime = 25或大于25时,就开始出现问题了
expTime = 99 输出 2017-10-25 14:07:14
expTime = 30 输出 2017-10-06 07:10:01
expTime = 28 输出 2017-10-04 07:10:01
expTime = 25 输出 2017-10-01 07:10:01
expTime = 24 输出 2017-11-19 00:12:49
expTime = 20 输出 2017-11-15 00:12:49
expTime = 10 输出 2017-11-05 00:12:49
看输出,expTime <= 24时,可以输出正常的日期,如果大于24,则输出错误的日期。
如果需要计算多少天以后的时间建议使用下面这种方式进行计算,虽然可以计算得到相对准确的日期,但是时间上还是有问题的
Date dat = null; Calendar cd = Calendar.getInstance();
cd.add(Calendar.DATE, expDay);
dat = cd.getTime();
SimpleDateFormat dformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//Timestamp date = Timestamp.valueOf;
System.out.println(dformat.format(dat));
Date after = Tools.stringToDate(dformat.format(dat));
long ch = after.getTime() - datePay.getTime();
System.out.println(ch/24/60/60/1000);
输出的结果:
2018-10-26 01:30:39
365
-------------------------------------------------------------------------------------------------------
产生问题的原因和更好的解决办法还会继续研究并更新
该问题的后续更新:
他喵的~ 这个怪我了,大半夜的脑子不好使了,代码写的有问题,直接上新代码
String expTime = goodsInfo.getExpTime();
int expDay = Integer.parseInt(expTime);
Date datePay = Tools.stringToDate(payTime);
Calendar cd = Calendar.getInstance();
cd.setTime(datePay);
cd.set(Calendar.DATE, cd.get(Calendar.DATE) + expDay);
Date dateExp = cd.getTime();
String expDate = Tools.getTimeStrByDate(dateExp);
这回这个应该是可以的了,其实之前的代码方向上基本正确的,但是我写的有问题,清点喷我,我是码农啊~~~