Javascript 格式化RSS源的日期和时间
我有一个RSS提要,我使用FeedRoll创建它,我正在通过xslt将它拉入我的站点。我的问题是,我需要通过javascript创建什么格式来设置日期格式,使其看起来不像: 2013年12月4日05:00:00上午 看起来像: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
<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