一个关于借款时间的问题

问题:如果我在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值