我刚学习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(年)。
格式有问题吗?
答案 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>