基于日期的Javascript显示


Javascript display based on Date

我有一个页面已经调用了SQL数据库,我想根据其中一个条目的条件显示一个div。不过,我无法让这件事对我起作用,我正在努力寻找正确的答案。如果数据库中的过期日期列条目还有一个月,我希望使用JavaScript显示一个名为#expiryDate的Div。

我可以用<?php echo $data["expires"]; ?>显示数据库条目但我想做这样的事。。。。

<script type="text/javascript">
  $function() {
    var subval;
    subval = $data["expires"];
    if(..........) {
      $('#expiryDate').show();
    } else {
      $('#expiryDate').hide();
    }
  }};
</script>

但是我不能算出if。我希望它是如果$date["expires"]中的日期还有一个月,那么。。。。我错过了什么?

演示:http://jsfiddle.net/Lts1rg18/

假设$data["expires"]是一个日期字符串;

 var expDate = new Date(<?php echo "$data['expires']"; ?>);
 var now = new Date();
 var oneMonthFromNow = new Date(now.getFullYear(), now.getMonth() + 1, now.getDate());
 if(expDate <= oneMonthFromNow) {
   $('#expiryDate').show();
 } else {
   $('#expiryDate').hide();
 }

我建议将moment.js添加到您的项目中,并尝试以下操作:

<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script type="text/javascript" src="js/moment.js"></script>
</head>

然后是下面的jQuery:

$(document).ready(function () {
    expiryDate();
});
function expiryDate() {
    var dbDate = $data["expires"];
    var expDate = moment(dbDate).format();
    var curDate = moment().format();
    var oneb4 = moment(expDate).subtract(1, 'months').format();
    if (curDate > oneb4) {
        $('#expiryDate').show();
    } else {
        $('#expiryDate').hide();
    }
}

如果可能,请在PHP中执行计算,以避免给客户端浏览器带来压力。

我喜欢Sebbzzz的答案,但个人偏好是我的时间计算发生在时间戳中,所以:

<?php
$strExpiryTimestamp = strtotime($date["expires"]);
/* For mockup purposes */
$intMonth = 1; /* date('n') Gets this month */
$intYear = 2014; /* date('Y') Gets this year */
$intStartOfMonth = mktime(0, 0, 0, $intMonth, 1, $intYear);
if($strExpiryTimestamp < $intStartOfMonth) {
    $strOp = 'show';
} else {
    $strOp = 'hide';
}
?>
<html>
    <body>
        <h1>Your HTML</h1>
        <script>
        $(document).ready(function () {
            $('#expiryDate').<?php echo $strOp; ?>();
        });
        </script>
    </body>
</html>

使用上述方法,您可以清楚地看到,计算是在服务器上"顶部"执行的,然后只要$strOp作为变量可用,脚本部分就可以包含在任何位置。

如果您想了解更多关于日期的信息,请查看此处的PHP手册页面