Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 格式化RSS源的日期和时间_Javascript_Php_Xslt_Rss - Fatal编程技术网

Javascript 格式化RSS源的日期和时间

Javascript 格式化RSS源的日期和时间,javascript,php,xslt,rss,Javascript,Php,Xslt,Rss,我有一个RSS提要,我使用FeedRoll创建它,我正在通过xslt将它拉入我的站点。我的问题是,我需要通过javascript创建什么格式来设置日期格式,使其看起来不像: 2013年12月4日05:00:00上午 看起来像: <script language="JavaScript" src="http://www.feedroll.com/rssviewer/feed2js.php? src=http%3A%2F%2Frss.cnn.com%2Frss%2Fcnn_topstories

我有一个RSS提要,我使用FeedRoll创建它,我正在通过xslt将它拉入我的站点。我的问题是,我需要通过javascript创建什么格式来设置日期格式,使其看起来不像:

2013年12月4日05:00:00上午

看起来像:

<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>
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>

如下所示:

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

我认为Javascript是最简单的方法。。。从逻辑上讲,我被卡住了

****更新****(以下是我的样式表的外观):


图片在这里。。。

我很快就能在谷歌上找到的是Feedroll只提供这种日期格式。(可选择设置自定义时区)

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

编辑:这里是一个使用jquery的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>

函数myFormat(日期时间){
变量月份=['1月'、'2月'、'3月'、'4月'、'5月'、'6月'、'7月'、'8月'、'9月'、'10月'、'11月'、'12月'];
var dateString=months[dateTime.getMonth()]+''+dateTime.getDate()+','+dateTime.getFullYear();
var时间串;
if(dateTime.getHours()==0)

timeString=“12:”+(dateTime.getMinutes()我认为最好是在上游进行。你能发布你的XSLT样式表吗?@user3016153我刚刚更新了我的问题。好吧,钱在“新闻提要”中未显示的模板。IMHO,要自定义FeedRoll提供的内容之外的内容,您可以直接访问RSS源。将Atom提要转换为HTML非常容易,然后您可以将自己的CSS样式应用于HTML。OTOH,我看到原始CNN提要提供的时间戳为
Tue,2013年12月3日20:59:45 EST
。如果您愿意的话需要更改时区和/或转换为12小时格式,您可能还是希望通过Javascript来完成。@user3016153为什么不显示它?它是第一个模板…由Javascript行组成。@nl-x我的意思是我们看不到它的功能。我们需要看到它指向的Javascript。是的,我自己解决了这个问题…仅限提要滚动允许您提取时区或简单格式。我正在尝试覆盖此格式…将innerText解析为日期对象听起来有些过分…这是覆盖此格式的唯一方法吗?如果是,这将如何写入?@nl xvery very very close…出于某种原因,时间偏移显示为-7:0PM…@nl xyeah,我知道。您可能ready在我第二次编辑它之前就把代码拿走了。现在试试看哦,等等…现在PM显示为AM…我肯定我能找到这个。看看它。要添加…有没有办法删除“5:00PM”而改为显示为“5 PM”?@nl-x