我是PHP新手。我正在使用mysql。我必须比较两个日期,只有当两个日期匹配时才返回结果。其中一个日期来自数据库,另一个来自应该存储在数据库中的jquery UI Datepicker。这里的问题是,这两个日期的格式是不同的,我无法验证他们。示例:数据库中的日期格式为"yyyy-mm-dd",使用日期选择器选择的日期格式为"dd-mm-yyyy"。选择的日期必须以相同的dd-mm-yyyy格式显示。经过大量的搜索,我发现在数据库中无法更改格式。应该用包含5个日期值的列检查所选日期。那么,怎么才能做到呢?我还没有在数据库中存储选定的日期。
$(document).ready(function () {
$("#datepicker").datepicker({
dateFormat: "dd-mm-yy"
});
$('form#dateform').submit(function(){
var aselectedDate = $('#datepicker').val();
if(aselectedDate !=''){
alert('selected ' +aselectedDate); }
return false;
});
});
如果我得到你想要的,你可以使用strtotime函数。它将传递给它的datetime字符串转换为Unix时间戳,您可以使用该时间戳进行比较。
如果datepicker中的日期为21-10-2015
,则该函数将返回1445385600
如果存储在db中的日期是2015-10-21
,那么该函数也将返回1445385600
所以你可以很容易地比较这两个。
$var1 = strtotime('2015-10-21');
$var2 = strtotime('21-10-2015');
则比较if($var1 == $var2)
要比较两个日期(一个来自MySQL,另一个来自jQuery日期选择器),首先需要使两个日期格式相同。
有两种方法:
第一个字符串比较方法(如果您希望日期以'dd-mm-yy'格式显示)
将MySQL日期转换为jQuery日期格式:
<?php
$DateFromDatabase = "2015-10-21"; // 'yyyy-mm-dd' from MySQL Database
?>
<script>
// 'd-m-y' in php => result in 'dd-mm-yy' format
var $ConvertedDate = "<?php echo date("d-m-y",strtotime($DateFromDatabase)); ?>";
$(document).ready(function() {
$("#datepicker").datepicker({
dateFormat: "dd-mm-yy"
});
$('#dateform').submit(function(){
var aselectedDate = $('#datepicker').val();
if($ConvertedDate == aselectedDate){
alert("Both Dates Matched...");
} else {
alert("Dates Not Matched...");
return false;
}
});
});
</script>
第二个字符串比较方法(如果日期格式没有问题)
将DatePicker日期格式更改为MySQL日期格式:
<?php
$DateFromDatabase = "2015-10-21"; // 'yyyy-mm-dd' from MySQL Database
?>
<script>
$(document).ready(function() {
$("#datepicker").datepicker({
dateFormat: "yyyy-mm-dd"
});
$('#dateform').submit(function(){
var aselectedDate = $('#datepicker').val();
if($DateFromDatabase == aselectedDate){
alert("Both Dates Matched...");
} else {
alert("Dates Not Matched...");
return false;
}
});
});
</script>
第一个具有日期对象的方法与各种操作符的比较
这里我们需要MySQL日期字符串和日期picker字符串的日期对象。
1)用JavaScript从MySQL数据库中解析日期字符串创建日期对象
var $ConvertedDate = new Date(Date.parse("<?php echo $DateFromDatabase; ?>"));
2)从DatePicker方法获取UTC日期对象'getUTCDate'
var $aselectedDate = $('#datepicker').datepicker('getUTCDate');
这里两个日期对象必须是UTC日期对象,因为php日期将返回UTC日期和JavaScript日期将返回以毫秒为单位的日期。
然后我们可以用'getTime()'
完整的解决方案如下:
<?php
$DateFromDatabase = "2015-10-21"; // 'yyyy-mm-dd' from MySQL Database
?>
<script>
// Parse php UTCDate into JavaScript UTCDate
var $ConvertedDate = new Date(Date.parse("<?php echo $DateFromDatabase; ?>"));
$(document).ready(function() {
$("#datepicker").datepicker({
dateFormat: "dd-mm-yy"
});
$('#dateform').submit(function(){
var $aselectedDate = $('#datepicker').datepicker('getUTCDate');
if($aselectedDate.getTime() < $ConvertedDate.getTime()){
alert("Selected Date is Smaller than Database Date");
} else if($aselectedDate.getTime() > $ConvertedDate.getTime()){
alert("Selected Date is Greater than Database Date");
} else if($aselectedDate.getTime() === $ConvertedDate.getTime()){
alert("Selected Date is Equal To Database Date");
}
});
});
</script>