添加时间跨度到日期?

时间:2011-09-03 10:16:06

标签: coldfusion timespan dateadd

有人能想到一个有效的方法来为日期添加时间跨度吗?

如下所示:

    <cfset foo = now() + createTimeSpan(15,12,30,30)>
基于.NET的CFML引擎中的IIRC我可以简单地使用 date.add(timespan),但我现在还记不起等效的Java快捷方式。

提前致谢。

1 个答案:

答案 0 :(得分:3)

你究竟在这里问什么?一方面你把它标记为CF问题并使用CFML来回答你自己的问题;然后你开始询问Java捷径?

如果您想知道如何在CFML中执行此操作,那么您的代码示例 是如何在CFML中执行此操作的。

如果你想知道如何将一个CF时间跨度值(这只是几天的数字表示)添加到Java日期,那么它似乎有点棘手,因为我可以找到所有添加的Calendar方法时间跨度的组成部分,而不是整个时间跨度。

此代码可能会显示您所有的答案(除了如何使用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 --->

这回答了你的问题究竟是什么?