格式化RSS提要日期和时间

时间:2013-12-05 22:55:24

标签: javascript php xslt rss

我有一个RSS Feed我使用FeedRoll来创建它我将它通过xslt拉入我的网站。我的问题是通过javascript进行格式化我必须创建格式化我的日期看起来不像:

2013年12月4日05:00:00

,而不是:

2013年12月4日下午5:00

FeedRoll提供的脚本是:

<script language="JavaScript" src="http://www.feedroll.com/rssviewer/feed2js.php?
src=http%3A%2F%2Frss.cnn.com%2Frss%2Fcnn_topstories.rss&num=5&date=y&tz=+n/-
n/'feed'&utf=y"  charset="UTF-8" type="text/javascript"></script>

显示如下: enter image description here

看起来这个特定的Feed是由php驱动的,偏移量设置为:+ n / -n /'feed'但这对我来说没什么意义。 我如何让这个月缩短为零对齐,就像我正在寻找的那样?

我假设Javascript是最简单的方法...逻辑上我被卡住了。

****更新****(这是我的样式表的样子):

  <xsl:template name="news_feed">
     <script language="JavaScript" src="{RSSSrc}"  charset="UTF-8"
                type="text/javascript"></script>
  </xsl:template>

  <xsl:template match="NewsPage">
    <div class="news-block">
        <div class="holder">
            Image goes here...
            <div class="section">
                <dl>
                    <xsl:call-template name="news_feed"/>
                </dl>
                </div>
           </div>
    </div>
  </xsl:template>

1 个答案:

答案 0 :(得分:2)

Google很快就可以说Feedroll仅为日期提供此格式。 (可选择设置自定义时区)

如果您真的反对这一点,那么您所能做的就是设置一个onload函数,该函数获取类rss-date的所有元素,然后将innerText解析为Date对象。然后再将其输出为您选择的日期格式。

编辑:这是javascript中使用jquery的实现。

最困难的部分甚至不是选择和解析。但实际上只是将字符串格式化为您想要的。如果您不喜欢使用它,只需少量工作就可以去除所有jquery。

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type='text/javascript'>
function myFormat(dateTime) {
    var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
    var dateString = months[dateTime.getMonth()] + ' ' + dateTime.getDate() + ', ' + dateTime.getFullYear();
    var timeString;
    if (dateTime.getHours() == 0)
        timeString = "12:" + (dateTime.getMinutes()<10?"0"+dateTime.getMinutes():dateTime.getMinutes()) + "AM";
    else if (dateTime.getHours() < 12)
        timeString = dateTime.getHours() + ":" + (dateTime.getMinutes()<10?"0"+dateTime.getMinutes():dateTime.getMinutes()) + "AM";
    else if (dateTime.getHours() == 12)
        timeString = "12:" + (dateTime.getMinutes()<10?"0"+dateTime.getMinutes():dateTime.getMinutes()) + "PM";
    else
        timeString = (dateTime.getHours()-12) + ":" + (dateTime.getMinutes()<10?"0"+dateTime.getMinutes():dateTime.getMinutes()) + "PM";
    return dateString + ' ' + timeString;
}
$(document).ready(function() {$('.rss-date').each(function() {$(this).text(myFormat(new Date($(this).text())));});});
</script>