开发中,关于会员充值的时间问题
程序员文章站
2022-05-12 16:34:39
...
问题1:时间计算问题,数据库设计时,日期格式为yyyy-MM-dd,只到几号,在用户充值的时候,如果用户之前没有充值过会员,就根据现在的系统时间,往后加一个月,代码如下:
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, time);//time,是用户充值的月数
Date date = calendar.getTime();
users.setMemberExpirationTime(date);
memberRecharge.setMemberExpirationTime(date);
System.out.println("会员时间date"+date);
如果用户已经是会员,就在本来的时间上,加上对应的月数: Calendar calendar = new GregorianCalendar();
Date date1 = users.getMemberExpirationTime();
calendar.setTime(date1);
calendar.add(Calendar.MONTH, time);
date1=calendar.getTime();
users.setMemberExpirationTime(date1);
memberRecharge.setMemberExpirationTime(date1);
System.out.println("会员时间date1"+date1);
如果细心,就会发现以上的逻辑中,忽略了一种情况,就是用户之前充值过会员,然后他在会员过期之后(超过一天的时间),在去充值会员的话,时间应该从他当天充值的时间往后加一个月,但是在上面的逻辑中,会在之前的时间往后加一个月,这就会出现如下的情况:
小王2018.5.3充值了一个月的会员(2018.6.3到期),然后他在2018.7.2才续费一个月的会员,这样,如果按照上面的逻辑,他的会员到期时间就会变成2018.7.3,也就是刚充值的一个月的会员,第二天就到期了,所以应该在多加一种情况:
if(users.getMemberExpirationTime().getTime()<new Date().getTime()){//判断用户是不是在会员到期之后,才充值
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, time);
Date date = calendar.getTime();
users.setMemberExpirationTime(date);
memberRecharge.setMemberExpirationTime(date);
System.out.println("会员时间date"+date);
}
注:关于时间的计算,都应该以服务器为准 上一篇: 经典排序(待补充~
下一篇: java 获取时间问题
推荐阅读
-
关于Android开发中需要掌握的基础知识点讲述
-
关于网站开发中div标签中设置宽度后其中文本溢出的原因和解决方法
-
网页设计和开发中,关于字体的常识
-
在iOS开发中关于NSUserDefaults的使用解析
-
Android 开发中关于摄像头方向的理解
-
关于基于Linphone的视频通话Android端开发过程中遇到的问题
-
Android开发中关于Camera2 API的具体使用方法
-
简单介绍iOS开发中关于category的应用
-
关于Android官方开发教程中EditText editText = (EditText) findViewById(R.id.editText);报错的解决办法
-
loushang框架的开发中关于BSP的使用,将写好的功能模块部署到主页界面结构上