代码之家  ›  专栏  ›  技术社区  ›  Vikas

coldfusion:如何解析dd/mm/yyyy格式的日期?

  •  3
  • Vikas  · 技术社区  · 15 年前

    我发现了 ParseDateTime 函数,但它只根据英语(美国)语言环境约定解析日期/时间字符串。

    如何解析dd/mm/yyyy格式的日期?

    试试这个:

    <cfset TestdateFrom = ParseDateTime("10/9/2010") />
    <cfloop index="i" from="1" to="30" step="1">
        <cfset TestdateFrom = DateAdd( "d", 1, TestdateFrom ) />
        #TestdateFrom#<br/>
    </cfloop>
    

    在CF9中有一个 LSParseDateTime 功能。

    我不知道这是否对我有帮助。

    最后我应该使用Java库来解决这个问题吗?

    4 回复  |  直到 15 年前
        1
  •  3
  •   TimDawe    15 年前

    我已经成功地使用了这种技术来处理以自由文本形式输入的(英国格式)日期:

    <cfset SetLocale("English (UK)")>
    <cfset valid = true>
    
    <!--- Convert DD-MM-YYYY or DD.MM.YYYY to DD/MM/YYYY --->
    <cfset dt = replacelist(dt, ".,-", "/,/")>
    
    <!--- count date elememnts (must be 3 - LSParseDateTime will make potentially incorrect assumptions otherwise) --->
    <cfif listlen(dt, "/") neq 3>
        <!--- wrong number of elements --->
        <cfset valid = false>
    <cfelse>
        <!--- Correct number of elements so try to interpret as date/time object --->   
        <cftry>
            <cfset dt = LSParseDateTime(dt)> 
            <cfcatch type="Expression">
                <cfset valid = false>
            </cfcatch>
        </cftry>
    </cfif>
    

    如果在此结束时valid为true,则dt中的字符串日期表示形式已转换为日期/时间对象。ReplaceList步骤允许将日期输入为dd.mm.yyyy或dd-mm-yyyy以及dd/mm/yyyy。

        2
  •  6
  •   Vikas    15 年前

    看起来这是可行的:

    <cfset formatter = createObject("java","java.text.SimpleDateFormat")>
    <cfset formatter.init("dd/MM/yyyy")>
    <cfset newDate = formatter.parse("10/09/2010")>
    #newDate#
    

    还有其他建议吗?

        3
  •  5
  •   Community Mohan Dere    9 年前

    如果您的格式一致,您也可以这样做:

    <cfset dy=listGetAt(dateString,1,"/")>
    <cfset mo=listGetAt(dateString,2,"/")>
    <cfset yr=listGetAt(dateString,3,"/")>
    
    <cfset myDate=createDate(yr,mo,dy)>
    

    但是,真的, Tim's answer 是最好的。

        4
  •  2
  •   Stephen Moretti    15 年前

    您需要使用lsParseDateTime()。这是特定于区域设置的日期分析器。

    您可以直接将区域设置传递给函数的第二个参数,也可以使用setLocale()为请求设置区域设置。

    您可能会发现查看其他ls前缀函数也很有用。

    推荐文章