Mic*_*ael 7 coldfusion coldfusion-11
我有一个名为变量的变量date1,它包含使用生成的ColdFusion日期/时间对象parseDateTime.当我转储变量时,我得到了{ts '2014-12-20 15:46:57'}.
我有另一个变量date2,它包含另一个生成的ColdFusion日期/时间对象dateConvert("local2utc",now()).当我转储变量时,我得到了{ts '2014-12-20 15:49:40'}.
但是,当我这样做时,dateDiff("s",date1,date2)我得到-21436,这是太多秒.任何人都可以解释为什么会这样吗?我认为这可能是一个时区问题,但我无法理解它.
Repro代码
<cfset dtString = "Saturday, December 20, 2014 05:07:30 PM">
<cfset dtObject = parseDateTime(dtString)>
<cfdump var="#dtObject#">
<cfset utcNow = dateConvert("local2utc",now())>
<br><br><cfdump var="#utcNow#">
<br><br><cfdump var="#dateDiff("s",dtObject,utcNow)#">
Run Code Online (Sandbox Code Playgroud)
此问题的原因似乎是由于https://bugbase.adobe.com/index.cfm?event=bug&id=3338974中描述的错误.
如上面的URL'所述,从DateConvert返回的变量("local2Utc",now())似乎带有从本地到UTC的偏移量.当你将该变量用于任何事物(包括cfqueryparam)时,你得到的值会被偏移量(即回到你传入的值)所取消.
解决方法似乎是在转换后将日期转换为字符串.我为此创建了一个简单的包装函数,如下所示:
<cffunction name="local2utc" output="no">
<cfargument name="date">
<cfreturn dateConvert("local2utc",arguments.date).toString()>
</cffunction>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
488 次 |
| 最近记录: |