Coldfusion中的Now()值

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

我试图在cookie中设置表达式
#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 )