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_]「wednesday」の d が一致しないようにします。

しかし、実際には、DateFormat 関数を適切に使用するだけです。

于 2010-07-20T08:49:59.070 に答える
0

dateformat を使用できない理由がわかりません。dateformat が値を受け入れないことは一度もありません。文字列を使用することもできますが、気にしません。

于 2010-07-20T15:01:27.663 に答える