Date类和Calendar类的在测试中的应用总结

发表于:2010-9-13 11:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:mutong    来源:TaoBao QA Team

  接口测试代码编写过程中遇到一个日期问题,在此马克下解决过程:存在一个数据准备情况:某表中的某个时间字段是作为业务流程中的判断条件的,且该时间字段在当前测试用例中的要求是:当前系统时间的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这个便可以,在我们测试的日常工作中,很多关于时间判断的都可以用这些相关方法实现,不用手工计算了,可以节省时间

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号