一个关于借款时间的问题

来源:互联网 发布:mac看b站 编辑:程序博客网 时间:2024/04/28 19:56

问题:如果我在2015年1月31日向A借款1000元,一个月之后准时还。这时,问题就出来了,我是在2月28日还,还是在3月2日还?

这时我们就必须弄清楚我们是按30天一个月算得,还是直接按一个月算。


最近做一个p2p网贷的二次开发,遇到了这个问题,假如用户在31日发标,但如果下个月没有31日,这样就会产生一些误会。


那么假如我们把一个月定义成单纯的一个月,比如1月1日,一个月之后就是2月1日,而如果是1月31日,那么一个月之后就是2月28日(闰年是2月29日)。那么在程序里面怎么算呢?


Java里面提供了一些解决办法:

为了测试,我们把计算机时间跳到2015年1月31日

package test;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class CalendarTest {   //时间格式   private static SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd");   public static void main(String[] args) {   Calendar calendar = Calendar.getInstance();   calendar.setTime(new Date());   System.out.println("现在的日期是:"+sf.format(calendar.getTime()));      calendar.setTime(new Date());   calendar.add(Calendar.DATE, 30);//30天之后   System.out.println("一个月后(按一个月30天算)是:"+sf.format(calendar.getTime()));      calendar.setTime(new Date());   calendar.add(Calendar.MONTH, 1);//一个月之后   System.out.println("一个月后(按单纯一个月算)是:"+sf.format(calendar.getTime()));   System.out.println("***************************************");      calendar.setTime(new Date());   calendar.add(Calendar.MONTH, -1);   System.out.println("一个月前是:"+sf.format(calendar.getTime()));      calendar.setTime(new Date());   calendar.add(Calendar.YEAR, 1);   System.out.println("一年后是:"+sf.format(calendar.getTime()));      calendar.setTime(new Date());   calendar.add(Calendar.DATE, 1);   System.out.println("一天后是是:"+sf.format(calendar.getTime()));      }}

运行结果:

现在的日期是:2015年01月31
一个月后(按一个月30天算)是:2015年03月02
一个月后(按单纯一个月算)是:2015年02月28
***************************************
一个月前是:2014年12月31
一年后是:2016年01月31
一天后是是:2015年02月01

0 0