0

谁能想到一种为日期添加时间跨度的有效方法?

类似于以下内容:

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

IIRC 在基于 .NET 的 CFML 引擎中我可以简单地使用date.add(timespan),但我现在不记得等效的 Java 快捷方式。

提前致谢。

4

1 回答 1

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 --->

这能回答你的问题吗?

于 2011-09-03T10:55:51.530 回答