基于日期的Javascript显示

时间:2014-10-17 14:13:53

标签: javascript php

我有一个已经调用SQL数据库的页面,我想根据其中一个条目的条件显示div。我不能让这个为我工作,我很难找到正确的答案。 如果数据库上的到期日期列条目是一个月之后,我想要一个名为#expiryDate的Div显示JavaScript。

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

<script type="text/javascript">
  $function() {
    var subval;
    subval = $data["expires"];

    if(..........) {
      $('#expiryDate').show();
    } else {
      $('#expiryDate').hide();
    }
  }};
</script>

但我无法理解if位。我想要它 如果$date["expires"]中的日期是一个月之后,那么.... 我错过了什么?

3 个答案:

答案 0 :(得分:2)

演示: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();
 }

答案 1 :(得分:1)

如果可能,请在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>

使用上述方法,您可以清楚地看到计算是在#34;顶部&#34;在服务器上,只要$ strOp可用作变量,脚本部分就可以包含在任何地方。

如果您想了解更多有关日期的信息,请查看PHP手册页here

答案 2 :(得分:1)

我建议您在项目中添加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();
    }
}