Coldfusion中的Now()值
我试图在cookie中设置表达式Coldfusion中的Now()值,coldfusion,Coldfusion,我试图在cookie中设置表达式#Now()+CreateTimeSpan('30','0','0','0')#,并在JS函数中处理值 表达式的值显示为41720.406?这个值是什么意思 任何指针都会非常有用。您可能需要使用DateAdd()。所以使用DateAdd('d',30,Now()) 41720.406?这个值是什么意思 为了回答你的问题,显然它代表了CF纪元(即1899-12-30)的天数,加上或减去时区偏移 <cfscript> cfEpoch = cre
#Now()+CreateTimeSpan('30','0','0','0')#
,并在JS函数中处理值
表达式的值显示为41720.406
?这个值是什么意思
任何指针都会非常有用。您可能需要使用
DateAdd()
。所以使用DateAdd('d',30,Now())
41720.406?这个值是什么意思
为了回答你的问题,显然它代表了CF纪元(即1899-12-30)的天数,加上或减去时区偏移
<cfscript>
cfEpoch = createDate(1899, 12, 30);
// add number of whole days ie 41720
finalDate = dateAdd("d", 41720, cfEpoch );
// add partial days ie partialDay * millisecondsPerDay
finalDate = dateAdd("l", 0.406 * 86400000, finalDate);
// Result: Today's date and time plus 30 days
writeOutput( "finalDate="& dateConvert("local2UTC", finalDate) );
</cfscript>
cfEpoch=createDate(1899,12,30);
//加上天数,即41720
finalDate=日期添加(“d”,41720,cfEpoch);
//添加部分天数,即部分天数*毫秒天数
最终日期=日期添加(“l”,0.406*86400000,最终日期);
//结果:今天的日期和时间加上30天
writeOutput(“finalDate=“&dateConvert(“local2UTC”,finalDate));
话虽如此,按照其他人的建议使用它要简单得多,而不是处理时间跨度对象。既然您提到了Cookie,值得指出的是Cookie的日期使用特定的格式,即1970年1月1日星期四00:00:01 GMT 这不是CF默认设置日期格式的方式-当您输出
#SomeDate#
时,使用的格式是{ts'1970-01-01 00:00:01}
下面是一个函数,它以Cookie使用的格式将日期作为字符串返回:
<cffunction name="formatCookieDate" returntype="String" output=false access="public">
<cfargument name="DateTime" type="Date" default=#Now()# />
<cfargument name="isUtc" type="String" default=false />
<cfif NOT Arguments.isUtc >
<cfset Arguments.DateTime = DateConvert('local2utc',Arguments.DateTime) />
</cfif>
<cfreturn DateTimeFormat( Arguments.DateTime ,'E, dd Mmm yyyy HH:nn:ss' ) & ' GMT' />
</cffunction>
虽然有些人喜欢使用,但直接添加日期是完全有效的,尽管你可能想考虑是否实际上要增加30天,而不是增加1个月。
注意:在CF10之前的版本中,您需要将掩码拆分为和,并相应地更新掩码。使用时间跨度对象的原因是什么?要添加或减去日期,只需使用标准。如果您想了解该数字的含义,请对其应用日期格式。非常感谢Peter。这是我昨天的下一个路障。如果你真的想添加30天,如果添加1个月,如果是前者,使用<代码> +<代码>就足够了。否则,请使用
DateAdd
,因为它可以为您处理所有的日期逻辑。感谢您解释cfepoch信息。谢谢。
<cfscript>
cfEpoch = createDate(1899, 12, 30);
// add number of whole days ie 41720
finalDate = dateAdd("d", 41720, cfEpoch );
// add partial days ie partialDay * millisecondsPerDay
finalDate = dateAdd("l", 0.406 * 86400000, finalDate);
// Result: Today's date and time plus 30 days
writeOutput( "finalDate="& dateConvert("local2UTC", finalDate) );
</cfscript>
<cffunction name="formatCookieDate" returntype="String" output=false access="public">
<cfargument name="DateTime" type="Date" default=#Now()# />
<cfargument name="isUtc" type="String" default=false />
<cfif NOT Arguments.isUtc >
<cfset Arguments.DateTime = DateConvert('local2utc',Arguments.DateTime) />
</cfif>
<cfreturn DateTimeFormat( Arguments.DateTime ,'E, dd Mmm yyyy HH:nn:ss' ) & ' GMT' />
</cffunction>
formatCookieDate( Now() + 30 )