0

例如,我们有日期 2010 年 5 月 12 日

<cfset may_12_2010 = CreateDate(2010, 5, 12)>

使用DateFormat函数,我们可以使用

DateFormat(may_12_2010, "mmmm m dddd d yyyy")

这将显示May 5 Wednesday 12 2010

如果由于某种原因我不能使用该DateFormat功能,我们如何使用上面的示例显示相同的结果(使用相同的掩码)?

代码:

<cfset may_12_2010 = CreateDate(2010, 5, 12)>

<cfset mask = "mmmm m dddd d yyyy">

#DateFormat(may_12_2010, mask)#

<cfset d = DateFormat(may_12_2010, "d") />
<cfset dd = DateFormat(may_12_2010, "dd") />
<cfset ddd = DateFormat(may_12_2010, "ddd") />
<cfset dddd = DateFormat(may_12_2010, "dddd") />

<cfset m = DateFormat(may_12_2010, "m") />
<cfset mm = DateFormat(may_12_2010, "mm") />
<cfset mmm = DateFormat(may_12_2010, "mmm") />
<cfset mmmm = DateFormat(may_12_2010, "mmmm") />

<cfset yy = DateFormat(may_12_2010, "yy") />
<cfset yyyy = DateFormat(may_12_2010, "yyyy") />

<cfset stringDate = mask />

<cfset stringDate = REReplaceNoCase(stringDate, "d{4,4}", dddd, "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "d{3,3}", ddd, "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "d{2,2}", dd, "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "d", d, "ALL") />

<cfset stringDate = REReplaceNoCase(stringDate, "m{4,4}", mmmm, "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "m{3,3}", mmm, "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "m{2,2}", mm, "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "m", m, "ALL") />

<cfset stringDate = REReplaceNoCase(stringDate, "y{4,4}", yyyy, "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "y{2,2}", yy, "ALL") />

<br>
#stringDate#

上面的代码将显示

May 5 Wednesday 12 2010
5ay 5 We12nes12ay 12 2010

谢谢你

4

2 回答 2

1

要解决您的问题,只需制作您的正则表达式:

<cfset stringDate = REReplaceNoCase(stringDate, "\bdddd\b" , dddd , "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "\bddd\b"  , ddd  , "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "\bdd\b"   , dd   , "ALL") />
<cfset stringDate = REReplaceNoCase(stringDate, "\bd\b"    , d    , "ALL") />
....

\b标记“单词边界”的位置 - 这是单词字符和非单词字符之间的变化,其中“单词字符”是-[a-zA-Z0-9_]因此防止“星期三”中的 d 匹配。

但实际上,只要正确使用 DateFormat 函数!

于 2010-07-20T08:49:59.070 回答
0

I'm confused as why you can't use dateformat. I have never had dateformat not accept a value, you can even just use a string, it doesn't care.

于 2010-07-20T15:01:27.663 回答