找回密码
 加入
搜索
查看: 2879|回复: 4

[效率算法] 怎么判断一个8位数是有效的日期格式[已解决]

[复制链接]
发表于 2012-10-15 21:06:35 | 显示全部楼层 |阅读模式
本帖最后由 1007236046 于 2012-10-16 08:37 编辑

比如19980229,19980431都是不存在的
发表于 2012-10-15 21:17:42 | 显示全部楼层
提供个思路:截取Year:前4位;Month:5-6位;day:后2位
------------------------------------
数组dayList存每月天数:31,28,31,30,31,30,31,31,30,31,30,31
如果是闰年二月29天
-----------------------------------
if $Month < 13 and $Month > 0 and $day > 0 and $day <= $dayList[$Month] then
    是日期
endif


-----------闰年计算BAIDU来的---------------------------
YEAR同时满足以下条件:
1、年份能被4整除;
2、年份若是100的整数倍的话,需被400整除,否则是平年。
举例如下:
1900年能被4整除,但是因为其是100的整数倍,却不能被400整除,所以是平年;而2000年就是闰年;1904和2004、2008等直接能被4整除且不倍100整除,都是闰年。
---------------------------------------------------------

评分

参与人数 1金钱 +10 收起 理由
1007236046 + 10

查看全部评分

发表于 2012-10-15 21:25:03 | 显示全部楼层
#Include <Date.au3>
msgbox(0,0,_DateIsValid(stringleft($str,4) &'/'&stringmid($str, 5, 2)&'/'&stringright($str, 2)))

评分

参与人数 3金钱 +50 收起 理由
1007236046 + 20 谢谢指点
nmgwddj + 10 看来在时间处理上下过不少的功夫
魔导 + 20 这个牛,赞!!

查看全部评分

发表于 2012-10-15 21:47:41 | 显示全部楼层
#Include
msgbox(0,0,_DateIsValid(stringleft($str,4) &'/'&stringmid($str, 5, 2)&'/'&stringright($st ...
netegg 发表于 2012-10-15 21:25



netegg 正解,受教了!!
发表于 2016-1-12 22:05:18 | 显示全部楼层
$a = "19980229"
$var = _DateIsValid( StringRegExpReplace($a,"(\d{4})(\d{2})(\d{2})","${1}-${2}-${3}") )
msgbox(48,0,$var)

$b = "19980229"
$var = _DateIsValid( StringRegExpReplace($b,"(\d{4})(\d{2})(\d{2})","${1}-${2}-${3}") )
msgbox(48,0,$var)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-10 16:01 , Processed in 0.078320 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表