如何从传递的参数date和time创建DateTime?

如何从传递的参数date和time创建DateTime?,datetime,coldfusion,coldfusion-9,Datetime,Coldfusion,Coldfusion 9,我有一个表单,用户可以在其中选择开始/结束日期和时间,提交from后,我想创建createDateTime并使用传递的参数。所以我尝试了这种方法,但我只得到了数据库中存储的日期。这是我的密码: <cfargument name="DateFrom" type="date" required="yes"> <cfargument name="DateTo" type="date" required="yes"> <cfargument name="TimeFrom"

我有一个表单,用户可以在其中选择开始/结束日期和时间,提交from后,我想创建createDateTime并使用传递的参数。所以我尝试了这种方法,但我只得到了数据库中存储的日期。这是我的密码:

<cfargument name="DateFrom" type="date" required="yes">
<cfargument name="DateTo" type="date" required="yes">
<cfargument name="TimeFrom" type="string" required="yes">
<cfargument name="TimeTo" type="string" required="yes">

<cfset StartDateTime = createDateTime(year(arguments.DateFrom), month(arguments.DateFrom), day(arguments.DateFrom), hour(arguments.TimeFrom), minute(arguments.TimeFrom), 0)>
<cfset EndDateTime = createDateTime(year(arguments.DateTo), month(arguments.DateTo), day(arguments.DateTo), hour(arguments.TimeTo), minute(arguments.TimeTo), 0)>

 <cfquery name="addReservation" datasource="test">
    Insert Into tableReserv(PickDateTime,DropDateTime)
    Select <cfqueryparam cfsqltype="cf_sql_date" maxlength="12" value="#StartDateTime#">,
            <cfqueryparam cfsqltype="cf_sql_date" maxlength="12" value="#EndDateTime#"> 
    Where Not Exists(Select UserID
                     From aviRequests
                     Where PickDateTime < <cfqueryparam cfsqltype="cf_sql_timestamp" value="#StartDateTime#">
                     And DropDateTime > <cfqueryparam cfsqltype="cf_sql_timestamp" value="#EndDateTime#">
                     )
    Select SCOPE_IDENTITY() As RecID;
</cfquery>
由于某些原因,我的StartDateTime和EndDateTime不能同时创建日期和时间。以下是我的值在DB中的存储方式: 开始日期:2016-01-20 00:00:00.000 完:2016-01-21 00:00:00.000
我的createDateTime格式是否正确,或者代码中是否存在其他错误

这是您的问题:

<cfset StartDateTime = createDateTime(year(arguments.DateFrom)
, month(arguments.DateFrom)
, day(arguments.DateFrom)
, hour(arguments.TimeFrom)
, minute(arguments.TimeFrom), 0)>
日期部分没有问题,因为日期参数是日期。时间部分不是因为时间参数是字符串。您必须处理该字符串才能获得小时和分钟数

在评论中,您说您的时间字符串类似于上午7点。您必须对此进行处理,以获得正确的小时数和分钟数。你必须考虑的事情是:

最后两个字符是上午还是下午? 小时数是1位数还是2位数? 如果不是在一小时的顶端,那么如何表示分钟?
话虽如此,你可能不是第一个有这个问题的人。查看cflib.org,看看是否有可以使用的函数。

这是您的问题:

<cfset StartDateTime = createDateTime(year(arguments.DateFrom)
, month(arguments.DateFrom)
, day(arguments.DateFrom)
, hour(arguments.TimeFrom)
, minute(arguments.TimeFrom), 0)>
日期部分没有问题,因为日期参数是日期。时间部分不是因为时间参数是字符串。您必须处理该字符串才能获得小时和分钟数

在评论中,您说您的时间字符串类似于上午7点。您必须对此进行处理,以获得正确的小时数和分钟数。你必须考虑的事情是:

最后两个字符是上午还是下午? 小时数是1位数还是2位数? 如果不是在一小时的顶端,那么如何表示分钟?
话虽如此,你可能不是第一个有这个问题的人。查看cflib.org,看看是否有可以使用的函数。

TimeFrom/to和DateFrom/to的格式是什么?它们看起来像什么?日期从2016年1月14日,日期到2016年1月15日,时间从上午7:00,时间到12:00 PMcf_sql_date将值转换为日期,尝试将cfsqltype更改为cf_sql_timestamp没有默认的日期/时间格式,所以您只需dateFormatStartDate,'mm/dd/yyyy'timeFormatStartDate,HH:mm:ss@JedihomerTownend-Adobe最终在CF10中添加了一个组合。user3023588-只需小心使用n表示分钟,而不是m表示月数-TimeFrom/To和DateFrom/To的格式是什么?它们看起来像什么?日期从2016年1月14日,日期到2016年1月15日,时间从上午7:00,时间到12:00 PMcf_sql_date将值转换为日期,尝试将cfsqltype更改为cf_sql_timestamp没有默认的日期/时间格式,所以您只需dateFormatStartDate,'mm/dd/yyyy'timeFormatStartDate,HH:mm:ss@JedihomerTownend-Adobe最终在CF10中添加了一个组合。user3023588-只需小心使用n表示分钟,而不是m表示月数-是,始终首先验证日期或时间字符串。CF非常宽松,因此如果您只是按原样接受输入,那么在数据库中出现一些古怪的datetime条目只是时间问题……是的,总是首先验证日期或时间字符串。CF非常宽松,因此如果您只是接受输入,那么在数据库中出现一些古怪的datetime条目只是时间问题。。。