输入数字 判断日期
数字职场
与编程相关的招聘,都会准备很多考题,一不小心考生就在考题上栽了跟斗,特别是没有多少工作经验的应届毕业生,往往回答得过于理论化,很难令考官满意。为此,我们特意推出本系列,通过对真实考题的分析给大家提供在回答考题时有更多的实用性,让考官满意,顺利找到工作。
在各类招聘考试中,有一类题常常被考到,那就是日期判断。有很多软件在开发时,都要求具备日期判断的功能,特别是在一些行业软件中,例如财务软件、电力控制软件等。
题目:输入年月日格式yyyymmdd,判断是不是周末,例如对2010年进行判断。
剖析:此题考查的是格式转换思路,很具有代表性,如何把字符串yyyymmdd转换为日期格式yyyy-mm-dd是本题的关键,转换成日期格式后可以用FormatDateTime函数判断当天是星期几,如果为星期六或者星期日则输出“周末”(见图)。


常见有三种实现方法:第一种方法是将输入框的字符串转换为数字,再采用div、mod运算符进行数字拆分,然后把数字转换为字符串,最后用连接号“-”合并字符串后使用函数StrtoDate转换为日期格式;第二种方法是采用函数LeftStr、MidStr、RightStr对字符串进行分解,然后用连接号“-”生成新的字符串,再使用函数StrtoDate转换为日期格式;第三种方法是使用copy函数分解字符串后,再采用聚合日期函数EncodeDate生成日期格式。
解题步骤
第一步:判断输入资料的合法性
如果输入非数字字符则提示输入不合法,如果第五位和第六位不为01~12不合法,第七位和第八位不为01~31也不合法,如果不是闰年,还要判断2月份日期是否大于28,如果是闰年,则判断2月份日期是否大于29。关键代码如下(完整代码下载地址:http://www.shudoo.com/bzsoft):
//检查字符的合法性
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9',#9]) then
begin
ShowMessage(PChar('输入资料包含非数字字符,将退出操作'));
第二步:将数字字符转换为日期格式
方法1:采用操作数字的方法。取出输入框的字符串转换为数字,用div 10000得到年份,用mod和div操作符的方法获取月份,用mod取得日期,然后用连接符“-”把年月日连接起来后生成新字符串,最后把新字符串转换为日期类型。关键代码如下(完整代码下载地址:http://www.shudoo.com/bzsoft):
strtmp :=IntToStr((StrToInt(Edit1.Text) div 10000)) //年
+'-'+IntToStr(((StrToInt(Edit1.Text) mod 10000) div 100)) //月
+'-'+IntToStr(StrToInt(Edit1.Text) mod 100); //日
datetmp:= StrtoDate(strtmp);// datetmp为日期类型
方法2:采用函数LeftStr、MidStr、RightStr的方法。用LeftStr取出年份,用MidStr取出月份,用RightStr取出日期,然后用连接号“-”连接年月日生成新字符串,最后把新字符串转换为日期类型。关键代码如下(完整代码下载地址:http://www.shudoo.com/bzsoft):
strtmp :=LeftStr(Edit1.Text, 4) //年
+ '-'+ MidStr(Edit1.Text, 5,2) //月
+ '-'+ RightStr(Edit1.Text, 2); //日
datetmp:= StrtoDate(strtmp);
方法3:用聚合函数EncodeDate来实现转换。这里我们用copy函数来实现:
datetmp:=EncodeDate(strtoint(copy(Edit1.Text,1,4)),strtoint(copy(Edit1.Text,5,2)),strtoint(copy(Edit1.Text,7,2)));
第三步:判断星期几
用FormatDateTime函数来判断星期几。关键代码如下(完整代码下载地址:http://www.shudoo.com/bzsoft):
Edit2.Text :=FormatDateTime(‘dddd’, datetmp); //获得中文星期几
if (Edit2.Text ='星期六') or (Edit2.Text ='星期日') then
Edit3.Text:='周末'
else
Edit3.Text:='非周末';
我的建议>>
我们在实际项目开发过程中,经常会提供给用户输入框,便于他们查询某一天的数据记录,比如账单明细、产品实绩报表、医药开销、职工考勤等等,这就需要我们检验输入框字符的合法性后把字符转换为日期格式yyyy-mm-dd,然后根据日期进行数据库检索,所以这道题常常被考到就不足为奇了。
把字符转换为日期格式yyyy-mm-dd的方法有很多种,我们在做题的时候应该如何选择呢?如果是平时的考题随便哪种方法都可以,只要能得到结果,没有人会管你用了哪种方法,可在招聘考试中就要选择最精炼的方法,选择聚合日期的方法3是能博得考官好感的。