接口测试代码编写过程中遇到一个日期问题,在此马克下解决过程:存在一个数据准备情况:某表中的某个时间字段是作为业务流程中的判断条件的,且该时间字段在当前测试用例中的要求是:当前系统时间的7天后的时间,如现在的是2010-09-09 00:00:00,7天后便是2010-09-16 00:00:00,一时间不知道如何在xls中准备这样的数据,毕竟每次用例运行,当前系统时间都是变化的,那么就选择在数据库随意插入一个时间,在用例中update这个时间字段,update时就用到一些日期和时间的方法,这里简单介绍一下java中时间和日期的方法以及用法,这里写到Calendar类和Date类。 Java 语言的Calendar(日历),Date(日期),和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分。日期是商业逻辑计算一个关键的部分。所有的开发者都应该能够计算未来的日期,定制日期的显示格式,并将文本数据解析成日期对象。
Calendar 类如何实现上述情况的时间?
那么用到Calender的add方法,如
//getInstance返回一个Calendar对象,由当前时间初始化
Calendar c= Calendar.getInstance();
//用add方法获取当前系统时间之后7天的时间
c.add(Calendar.DATE, 7);
//更新数据库时用getTime方法,便可以获取需要设置的时间
update(“UPDATE king_user_accounts_0007 SET exper_expired_time = ? WHERE user_num = ?”, c.getTime(), userId);
那么如果在校验数据的时候需要验证的时间是一定格式的,我们如何做?这里用到SimpleDateFormat类
//实例化一个日期格式化对象
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd 23:59:59″);
//格式化当前的时间对象 sdf.format(c.getTime());
具体程序
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class MT1 { public static void main(String[] args) { Calendar c= Calendar.getInstance(); c.add(Calendar.DATE, 7); //king_1Template.update(“UPDATE king_user_accounts_0007 SET exper_expired_time = ? WHERE user_num = ?”, c.getTime(), userId); SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd 23:59:59″); System.out.println(sdf.format(c.getTime())); //this.verifyContextHasEntry(“experExipredTime”, sdf.format(c.getTime())); } } |
假设当前系统时间是2010-09-10 17:08:00 打印结果为2010-09-17 23:59:59
当然这个日期的格式有很多种,比如还有”EEE-MMMM-dd-yyyy” 结果为:星期五-九月-17-2010
字符的个数决定了日期是如何格式化的,参数为”EE-MM-dd-yy”,结果为:星期五-09-17-10
yyyy代表年”2010″,yy代表”10″,MMMM代表汉字月”九月”,MM代表英文月”09″,dd代表日”10″,EEEE代表汉字星期”星期五”,hh代表小时”14″点,mm代表分钟”58″分,ss代表秒”59″秒
当然还有一些常量可以用来计算今天是本年度的第多少天具体程序:
import java.util.Calendar; public class MT2 { public static void main(String[] args) { Calendar c = Calendar.getInstance(); //设置预期要计算的年份 c.set(Calendar.YEAR, 2010); //设置预期要计算的月份,记得要比当前月份减1,月份是从0开始计算的,1月会被记为0 c.set(Calendar.MONTH,8); //设置预期要计算的日期 c.set(Calendar.DAY_OF_MONTH,10 ); //实用常量DAY_OF_YEAR int woy = c.get(Calendar.DAY_OF_YEAR); System.out.println(woy); } } |
如今天是2010-9-10,则计算结果为253 还可以计算本周是本年度的第多少周,用常量:WEEK_OF_YEAR这个便可以,在我们测试的日常工作中,很多关于时间判断的都可以用这些相关方法实现,不用手工计算了,可以节省时间