根据日期显示div(jQuery - JS)

时间:2013-03-03 05:05:52

标签: javascript jquery

对于JS忍者来说,这可能是基本的JS编程,但我不确定如何攻击它,因为我是一个Javascript / jQuery noob。

我想根据今天的日期显示div。

逻辑是这样的:

检查今天的日期,如果今天的日期是span.job-date的30天或更长时间,则显示div.message。另外,我想在div中插入消息的天数。 (在此示例中将显示消息)。

<span class="job-date">1-14-2013</span>

<div class="message">This job is XX days old it may no longer be available</div>

谢谢!

3 个答案:

答案 0 :(得分:1)

这应该有所帮助。您可以使用此功能确定过去日期和今天之间的天数差异:

function getDaysOld(date) {
  // Get difference in days from ms and floor result
  return 0|(new Date() - date) * 1.16e-8;
}

您可以像这样使用它:

if (getDaysOld(new Date('1-14-2013')) >= 30) {
  ...
}

您可以使用jQuery从span中提取文本,并在需要时使用此功能显示/隐藏div

答案 1 :(得分:1)

JS:

$(function() {
  var jobDateText = $(".job-date").html()
    , jobDate = new Date(jobDateText)
    , today = new Date()
    , thirtyDaysInMS = 30 * 24 * 60 * 60 * 1000
    , differenceInMS = Math.abs(today - jobDate)
    , differenceInDays = Math.floor(differenceInMS / 1000 / 60 / 60 / 24);

  if (differenceInMS > thirtyDaysInMS) $(".message").show();
  $("span.daysOld").html(differenceInDays);
});

HTML:

    <span class="job-date">1-20-2013</span>

    <div class="message">This job is <span class="daysOld"></span> days old, and it may no longer be available</div>

CSS:

.message {
  display:none;
}

对于像这样的东西,AngularJS是jQuery的一个非常好的替代品。你在AngularJS中所要做的就是在控制器范围内设置一个变量,例如基于日期数学的$scope.stale = true$scope.daysOld,然后在你的html中

<div class="message" ng-show="stale">This job is {{daysOld}} days old it may no longer be available</div>

答案 2 :(得分:0)

假设你正在使用jQuery,这里有一个jsFiddle给你:http://jsfiddle.net/Pb3bm/

尽管如此,在你的工作日期课程中,我建议你将日期作为参数存储在毫秒中,如下所示:

<span class="job-date" datems="1358139600000">1-14-2013</span> 

这样您就不必担心日期显示的格式了。