Coldfusion XML PubDate Сравнение времени

У меня есть проект, который я создаю в 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>

1 ответ

Есть много способов сделать это. Во-первых, PDT на 7 часов отстает от GMT. Добавление 7 часов в ваше время PDT сделает его 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--->
Другие вопросы по тегам