【发布时间】:2012-05-21 20:13:29
【问题描述】:
我正在编写一个脚本,该脚本将从 CSV 文件中导入一些数据。当我这样做时,我希望能够检查一个变量,看看它是否是一个有效的日期字符串。
我已经看到了几种方法来检查一个字符串是否是一个日期,但其中大多数都需要你现在的格式。我不知道日期的格式。
现在我正在使用 strtotime(),但这并不容易
$field ="May";
if(strtotime($field)){
echo "This is a date";
}
在这种情况下,“May”是人员的名字,根本不是日期。
谁能推荐更可靠的功能?
根据你们中的一些人提出的问题进行编辑。
在我的例子中,对于作为“日期”传递的变量,它需要特定于日/月/年,因此仅“五月”会含糊不清。
基于此和下面Pauls的好点我们也可以测试看看字符串中是否包含数字,比如
$field ="May";
if(strtotime($field) && 1 === preg_match('~[0-9]~', $field)){
echo "This is a date";
}else{
echo "Nope not a date";
}
这似乎满足了我的迫切需求,但是任何人都可以发现任何问题或提出改进建议吗?
【问题讨论】:
-
您的脚本如何判断
May是姓名还是日期? -
你需要给出一些规范你接受什么样的值。否则,“May”与任何其他值一样好。
-
检查此人是否有姓
-
有什么模式吗?月份是否以数字形式出现以及以字符串形式出现?日期是否在单元格中分隔,即 A1 中的月份,B2 中的日期,还是它们都在一个单元格中?
-
@Alex:仅匹配输入中的数字远不能令人满意,因为它可以将
'0May'作为有效日期。