2011-09-03 3 views
0

Может ли кто-нибудь подумать об эффективном способе добавления временного интервала к дате?Добавить временные интервалы до даты?

Что-то вроде следующего:

<cfset foo = now() + createTimeSpan(15,12,30,30)> 

IIRC в .NET на основе движка CFML я мог бы просто использовать date.add (TimeSpan), но я не могу вспомнить, эквивалентную Java ярлык прямо сейчас ,

Заранее спасибо.

ответ

3

Что именно вы спрашиваете здесь? С одной стороны, вы отметили его как вопрос CF и используете CFML, который отвечает на ваш собственный вопрос; то вы начинаете спрашивать о сокращении Java?

Если вы хотите знать, как это сделать в CFML, тогда ваш пример кода - это, как вы это делаете в CFML.

Если вы хотите знать, как добавить значение временной интервала CF (которое является просто числовым числом из нескольких дней) к дате Java, то это кажется немного сложнее, потому что методы Календаря я могу найти все добавьте составные части времени, а не весь промежуток времени.

Этот код демонстрирует, возможно, ответы на все вопросы вы после (кроме как сделать это в один хит с Java дата/календарь):

<cfset dTs = now()><!--- grab now ---> 
<cfset fTimespan = createTimeSpan(15,12,30,30)><!--- make a timespan ---> 
<cfset fLater = dTs + fTimespan><!--- add the timespan to now yields a float ---> 
<cfset sLater = dateFormat(fLater, "yyy-mm-dd") & " " & timeformat(fLater, "HH:MM:SS")><!--- but you can treat a float as a date/time ---> 
<cfset dLater = createOdbcDateTime(fLater)><!--- or convert it back to a date object ---> 

<cfset jCal = createObject("java", "java.util.GregorianCalendar").init()><!--- java.util.Date is basically deprecated in favour of calendars ---> 
<cfset jCal.add(jCal.DAY_OF_MONTH, 15)><!--- one needs to set each part of the timespan separately ---> 
<cfset jCal.add(jCal.HOUR_OF_DAY, 12)> 
<cfset jCal.add(jCal.MINUTE, 30)> 
<cfset jCal.add(jCal.SECOND, 30)> 
<cfset sJCal = jCal.getTime()><!--- this gets a string that CF can use as a date back out of the calendar ---> 
<cfset bIsDate = isDate(sJCal)><!--- demonstrate that last statement to be true ---> 
<cfdump var="#variables#"><!--- and all the results ---> 

ли этот ответ любой ваш вопрос был на самом деле?

+0

Возможно, вам захочется попробовать некоторые лекарства, чтобы помочь вам успокоиться. Пример, который я опубликовал выше, возвращал только поплавок из-за того, как сохраняются временные интервалы, и я забыл, что в отличие от parseDateTime createOdbcDateTime может снова преобразовать результат. Итак, спасибо за ваш ответ, даже если ответ наткнулся на некоторые довольно грубые манеры. –

+0

mz_01, вы должны были указать, что у вас был только плавающий объект и вы хотели, чтобы объект даты был частью вашего вопроса. Многие вещи могут принимать число для даты и обрабатывать его нормально (например, cfqueryparam будет в порядке с ним). Я также думал: «wtf? Это именно то, что вы делаете». Я не интерпретировал ответ Адама как грубый. –

+0

Также стоит отметить, что parseDateTime работает так, как ожидалось в [Railo] (http://getrailo.org), (где он _does_ convert плавает обратно к текущим объектам). Я поднял [вопрос на трекер cfbugs] (http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html#bugId=87087), если кто-то хочет проголосовать за ACF за это поведение. –

Смежные вопросы