我搜索了SO,但我尝试过的答案似乎并没有解决我的问题。 我有这个简单的代码片段,用户将输入一个数字日期和一个月,应用程序将返回相应的Zodiac Sign。
$birthdate = $_POST["birthdate"];
$birthmonth = (ucwords(strtolower($_POST["month"])))
//validations here. . .
$tmp = $birthmonth . " " . $birthdate;
$tmp2 = date_create_from_format('M j', $tmp);
$formatted_dob = date_format($tmp2, 'm-d-Y');
$dob = strtotime($formatted_dob);
echo $formatted_dob;
if ($dob >= strtotime('01-20-2016') && $dob <= strtotime('02-18-2016')) {
echo "Aquarius";
} elseif ($dob >= strtotime('02-19-2016') && $dob <= strtotime('03-20-2016')){
echo "Pisces";
}
echo
块之外的那些if-else
内容工作正常,但是如果我输入25和2月的值(稍后将结果输入02-25-2016
),则它总是输出{{ 1}}。你如何比较两个Aquarius
值?
我尝试使用strtotime
对象,但它只给我一个错误,这是另一个故事。提前谢谢。
答案 0 :(得分:1)
编辑: 更改日期的顺序(*您的日期格式01-20-2016 mdY,这就是为什么当您将其转换为1970-01-01&#39; Ym-d&#39;但如果您更改它进入2016-01-20&#39; Ym-d&#39;在您的日期范围内,代码将在else-if中正常工作。
$birthdate = $_POST["birthdate"];
$birthmonth = (ucwords(strtolower($_POST["month"])))
//validations here. . .
$tmp = $birthmonth . " " . $birthdate;
$tmp2 = date_create_from_format('M j', $tmp);
$formatted_dob = date_format($tmp2, 'm-d-Y');
$dob = strtotime($formatted_dob);
echo $formatted_dob;
$dobcompare = date_create(date('m/d/Y', $dob));
$aqstartdate = date_create(date('m/d/Y', strtotime('2016-01-20')));
$aqenddate = date_create(date('m/d/Y', strtotime('2016-02-18')));
$pistartdate = date_create(date('m/d/Y', strtotime('2016-02-19')));
$pienddate = date_create(date('m/d/Y', strtotime('2016-03-20')));
if ($dobcompare >= $aqstartdate && $dobcompare <= $aqenddate) {
echo "Aquarius";
}
elseif ($dobcompare >= $pistartdate && $dobcompare <= $pienddate) {
echo "Pisces";
} else {
echo "IDK";
}
根据需要修改它。