ColdFusion createdate()

时间:2014-08-28 04:03:16

标签: date coldfusion

我刚学习ColdFusion函数CreateDate。但是,当我使用CreateDate时,值输出是不同的。我的意思是它每个月和每天都在变化。

<cfoutput>
<cfset txtBirthDate='07-10-1983'>
<cfset valueOf_txtBirthDate =  dateFormat(CreateDate(Year(txtBirthDate),Month(txtBirthDate),Day(txtBirthDate)),'YYYY-MMM-DD')>

#txtBirthDate#<br/><br/>
#valueOf_txtBirthDate#<br/>
</cfoutput>

txtBirthDate 的值为 07-10-1983 ,但CreateDate创建的 valueOf_txtBirthDate 的值为 1983-10年7月即可。七月为什么?它应该是10月:07(日期),10(月),1983(年)。

格式有问题吗?

6 个答案:

答案 0 :(得分:7)

您正以非常复杂的方式使用createDate()txtBirthDate不是约会对象,因此您不应将其用作year()month()等日期函数的输入。输入应该已经在您使用日期函数时成为日期对象。

我们假设您从字符串07-10-1983开始,格式为mm-dd-yyyy

txtBirthDate ='07-10-1983'; // dd-mm-yyyy

// extract the specific date parts from the string
yyyy = listLast(txtBirthDate, "-");
mm = listGetAt(txtBirthDate, 2, "-"); 
dd = listFirst(txtBirthDate, "-");

// create a date object out of those components
birthDate = createDate(yyyy, mm, dd);

// output the date object in human readable format
writeOutput(dateFormat(birthDate, "YYYY-MM-DD"));

(显然在实际代码中你没有那些仅用于陈述显而易见的评论!)

在输出时,只在最后一点使用dateFormat()。对于其他日期操作,请使用实际日期对象:birthDate

答案 1 :(得分:1)

因为默认情况下您的日期是mm / dd / yyyy格式。所以

<cfset txtBirthDate='07-10-1983'>

将于1983年7月10日由CF阅读。因此外出...

答案 2 :(得分:0)

您可以使用Java函数执行此操作。 这是它的工作原理:

<cfset txtBirthDate='07-10-1983' />
<cfset formatter = createObject("java","java.text.SimpleDateFormat") />
<cfset formatter.init("dd-MM-yyyy") />
<cfset birthDate= formatter.parse(txtBirthDate) />

答案 3 :(得分:0)

似乎应该做的伎俩:

 <cfset txtBirthDate = '10-7-1983'>
 #DateFormat(txtBirthDate, "MMM, D, YYYY")#

注意我在cfset中颠倒了月份和日期的位置,以使其正确显示。

答案 4 :(得分:0)

你可以做一些简单的事情:

txtBirthDate = '07-10-1983'; //dd-mm-yyyy
arrayDate = listToArray(txtBirthDate, '-');
date_birthDate = createDate(arrayDate[3], arrayDate[2], arrayDate[1]);

writeOutput(lsDateFormat(date_birthDate, 'yyyy-mm-dd');

答案 5 :(得分:0)

<cfscript>
    txtBirthDate=CreateODBCDate("1983-10-07");
    txtBirthDate=LSDateFormat(txtBirthDate, "dd/mm/yyyy");
</cfscript>

<cfoutput>
    #txtBirthDate#
</cfoutput>