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

У меня есть проект, который я создаю в Coldfusion 10, и он почти готов, но мне просто нужно показать, сколько времени прошло с момента последнего обновления в канале XML. Я знаю, что это не должно быть слишком сложно, но я не могу понять это.

Проект подается XML-потоком из публикации, и из всех публикаций в ленте мне нужно выяснить, какая публикация является самой последней (они могут быть не в хронологическом порядке в ленте). Мне также нужно сравнить самую последнюю публикацию в ленте с текущим местным временем, которое является PDT, а публикации в ленте указаны по Гринвичу. Я уже проанализировал 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>

person user3788682    schedule 30.06.2014    source источник
comment
Ваша первая строка смотрит на переменную с именем timeDifference. Как эта переменная относится к вашему вопросу? Кроме того, откуда это происходит?   -  person Dan Bracuk    schedule 30.06.2014
comment
Я предполагал, что когда будет определена самая ранняя дата публикации, это время будет сравниваться с текущим местным временем PDT. Затем я смогу отображать временные рамки в виде серии временных сегментов с цветовым кодированием, чтобы привлечь внимание к тому, сколько времени прошло с момента последнего обновления. Таким образом, разница между последним обновленным и текущим временем будет храниться в переменной timeDifference. На самом деле у меня это работало, но код был ужасно запутанным и никогда не был правильным.   -  person user3788682    schedule 30.06.2014


Ответы (1)


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