0

我正在使用 twitter api 和 created_at 属性。具体来说,我试图让时间戳在 X 秒、分钟、小时、天、几周前发布。

我认为我编写了正确的函数,我只是不确定如何调用该函数。我试图将我自己的属性放在一个 div 上并使用 jquery 来找到那个 div。现在我只需要知道如何调用该函数。

<div style="text-align: left" data-utc="@Model.FullTweetData.CreatedAt"></div>

<script src="/javascript/jquery-2.0.3.min.js" type="text/javascript"></script>

<script type="text/javascript">
    $(document).ready(function ($) {

        $("div[data-utc=@Model.FullTweetData.CreatedAt]")

        function parseTwitterDate(tdate) {
            var system_date = new Date(Date.parse(tdate));
            var user_date = new Date();
            if (K.ie) {
                system_date = Date.parse(tdate.replace(/( \+)/, ' UTC$1'))
            }
            var diff = Math.floor((user_date - system_date) / 1000);
            if (diff < 60) { return "less than a minute ago"; }
            if (diff <= 90) { return "one minute ago"; }
            if (diff <= 3540) { return Math.round(diff / 60) + " minutes ago"; }
            if (diff <= 5400) { return "1 hour ago"; }
            if (diff <= 86400) { return Math.round(diff / 3600) + " hours ago"; }
            if (diff <= 129600) { return "1 day ago"; }
            if (diff < 604800) { return Math.round(diff / 86400) + " days ago"; }
            if (diff <= 777600) { return "1 week ago"; }
            return "on " + system_date;
        }
        var K = function () {
            var a = navigator.userAgent;
            return {
                ie: a.match(/MSIE\s([^;]*)/)
            }
        }();
    });
</script>

任何帮助都会很棒

4

1 回答 1

1

获取属性的值并将其存储在变量中:

var timeThing = $("div").attr('data-utc');

然后调用函数并传递参数:

parseTwitterDate(timeThing);

我猜想仅仅选择所有的 div 不会给你你正在寻找的结果,所以你可以考虑将 id 或类附加到 div 以确保你选择了正确的:

HTML:

<div class="twitterDates" data-utc="@Model.FullTweetData.CreatedAt"></div>

然后,您可以选择该类的所有 div,遍历每个 div,并为每个 div 调用解析日期函数。

js:

$('div.twitterDates').each(function(){
  var timeThing = $(this).attr('data-utc);

  parseTwitterDate(timeThing);  
});

还因为您可能希望将函数的返回值放在某个地方,您可能会考虑这样的事情:

$('div.twitterDates').each(function(){
  var timeThing = $(this).attr('data-utc);

  $(this).text(parseTwitterDate(timeThing));
});
于 2013-10-21T16:06:53.723 回答