好吧,我已经搜索了 2 天,并认为我找到了解决方案,但它不起作用,也许我可以在这里帮忙。
我试图允许用户选择表单发布的日期和时间。我发现 type="datetime-local"可以实现这一点(尽管它没有得到浏览器的广泛支持,但它似乎仍然适合我的目的。)
表单元素:
<input name="PostDate" type="datetime-local"
(我们使用的 CF 版本已弃用 cfcalendar)
我的cfform
方法是“post”,我的操作是“submit.cfm”
当我们到达 Submit.cfm 页面时,我使用以下 CF 代码来格式化日期以进入 MSSQL 数据库:
<cfset PostDate=Replace(PostDate,"T"," ","All")><br>
<cfset PostDate = DateTimeFormat (PostDate, "yyyy-MM-dd HH:nn:ss")>
但是...当我尝试将日期插入数据库时,格式化的日期似乎没有保存在#PostDate#变量中(MSSQL 数据库服务器抛出此错误:
这是submit.cfm的代码
<cfmodule template="customTags/front.cfm" >
<cfoutput>
<p>Date before format: #PostDate#</p>
</cfoutput>
<cfset PostDate=Replace(PostDate,"T"," ","All")>
<cfset PostDate = DateTimeFormat (PostDate, "yyyy-MM-dd HH:nn:ss")>
<br>
<cfoutput>
<p>Title: #PostTitle#</p>
<p>Date after format: #PostDate#</p>
<p>Author ID: #UserID#</p>
<p>Category ID: #CategoryID#</p>
<p>Post Text: #Post#</p>
</cfoutput>
<hr>
<!--- Insert the new record --->
<cfinsert datasource="Intranet" tablename="TBL_POST">
<h1>Post Added</h1>
<cfoutput> You have added #Form.PostTitle#.</cfoutput>
</cfmodule>
作为这个问题的最后一个资格,我需要说我是 ColdFusion 的绝对初学者(我们的国家机构使用它),自从我编写 HTML 表单以来已经有十多年了。
我感谢我能得到的所有帮助。
最佳答案
感谢 Dan Bracuk,我能够找到解决此问题的方法:
我需要在 PostDate 前加上 - form。 像这样:
<cfset form.PostDate=Replace(form.PostDate,"T"," ","All")><br>
<cfset form.PostDate = DateTimeFormat (form.PostDate, "yyyy-MM-dd HH:nn:ss")>
原因是 cfinput
处理表单范围内的变量,而原始 cfset
命令在变量范围内创建了一个变量。
关于sql-server - 需要帮助在 ColdFusion 中格式化类型 ="datetime-local"(不是冷聚变元素),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62641055/