【问题标题】:Coldfusion XML PubDate Time ComparisonColdfusion XML PubDate 时间比较
【发布时间】:2014-06-30 00:01:40
【问题描述】:

我在 Coldfusion 10 中创建了一个项目,它几乎完成了,但我只需要显示自上次更新 XML 提要以来已经过去了多长时间。我知道这应该不会太难,但我似乎无法弄清楚。

该项目由来自出版物的 XML 提要提供,并且在提要中的所有发布日期中,我需要找出哪个发布日期是最新的(它们在提要中可能没有按时间顺序排列)。我还需要将提要中的最新发布日期与当前本地时间(即 PDT)进行比较,提要中的发布日期在 GMT 中列出。我已经解析出 XML,并且发布日期被捕获在名为“rssDate”的变量中,并且发布日期的格式如下:{ts'2014-06-27 20:48:46'}。

这里列出了需要的元素

  1. 在 XML 供稿中查找最近的发布日期
  2. 将最近的发布日期(日期和时间)从 GMT 转换为 PDT 并显示为最后更新时间戳
  3. 确定自最近发布日期发布以来的时间,并根据时间范围以彩色编码显示输出(请参阅随附的输出代码)。

基于时间范围的自上次更新以来的时间颜色编码输出

<cfif timeDifference LT 1>
<cfset meterColor = "4bbd07">
<cfset colorName = "Green">
<cfset messageText = "Updated less than one hour ago">
<cfelseif timeDifference GTE 1 AND timeDifference LT 1.3>
<cfset meterColor = "64ff06">
<cfset colorName = "Lime">
<cfset messageText = "Updated less than one and a half hours ago">
<cfelseif timeDifference GTE 1.3 AND timeDifference LT 2>
<cfset meterColor = "fffc06">
<cfset colorName = "Yellow">
<cfset messageText = "Updated more than two hours ago">
<cfelseif timeDifference GTE 2 AND timeDifference LT 2.3>
<cfset meterColor = "fdae15">
<cfset colorName = "Orange">
<cfset messageText = "Updated more than two hours ago">
<cfelseif timeDifference GTE 2.3 AND timeDifference LT 3>
<cfset meterColor = "ff00fc">
<cfset colorName = "Pink">
<cfset messageText = "Updated more than two and a half hours ago">
<cfelseif timeDifference GTE 3>
<cfset meterColor = "fe0000">
<cfset colorName = "Red">
<cfset messageText = "Updated more than three hours ago">
</cfif>

【问题讨论】:

  • 您的第一行查看名为 timeDifference 的变量。这个变量与您的问题有什么关系?还有,它是从哪里来的?
  • 我设想最早的发布日期何时确定,并将该时间与当前本地 PDT 时间进行比较。然后,我将能够在一系列时间段中显示时间范围,并使用彩色编码显示,以提醒人们注意自上次更新以来已经过去了多长时间。因此,上次更新时间和当前时间之间的差异将存储在变量 timeDifference 中。我实际上有这个工作,但代码非常复杂而且永远不会正确。

标签: xml date coldfusion comparison pubdate


【解决方案1】:

有很多方法可以做到这一点。一种是 PDT 比 GMT 晚 7 小时。在您的 PDT 时间中添加 7 小时将使其成为 GMT,然后您可以比较两者。 (您可以在一行中完成所有操作,只是为了更清楚地分解它)

<cfset myGMTTime=DateAdd("h",7,now())>
<cfset rssDat="2014-06-27 20:48:46"> <!---as you said you have this figured out--->
<cfset timeElapsed=DateDiff("n",myGMTTime,rssDate)><!---can use "h" for hours or "s" for seconds. It is "n" for minutes. "m" is used for months--->

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 2012-03-26
    • 2011-08-13
    相关资源
    最近更新 更多