閱讀855 返回首頁    go 阿裏雲 go 技術社區[雲棲]


struts標簽<s:date>的使用

 

最近研究struts時,發現這個標簽能夠解決很多格式上的問題,所以在網上搜索了一下這個內容,發現這篇文章寫得挺不錯的,挺有收獲。

struts 標簽 :<s:date/>
作用:用來格式化顯示日期的格式。

 


它可以用一種你指定的格式來顯示(如:“yyyy-MM-dd”),可以生成通俗易懂的注釋(如:in 2 hours,14 minutes),或者用預先定義的一個格式來顯示(如在properties配置文件中配置'struts.date.format').如果沒有找到這個struts.date.format,則會找默認的DateFormat.MEDIUM來格式化你的日期對象。當然如果在值棧中沒有找你對應的日期對象,則會返回空格。

可配置的標簽屬性有:
name
nice
format

 


 

1 nice屬性為true

i18n key default
struts.date.format.past {0} ago
struts.date.format.future in {0}
struts.date.format.seconds an instant
struts.date.format.minutes {0,choice,1#one minute|1<{0} minutes}
struts.date.format.hours {0,choice,1#one hour|1<{0} hours}{1,choice,0#|1#, one minute|1<, {1} minutes}
struts.date.format.days {0,choice,1#one day|1<{0} days}{1,choice,0#|1#, one hour|1<, {1} hours}
struts.date.format.years {0,choice,1#one year|1<{0} years}{1,choice,0#|1#, one day|1<, {1} days

 

 

2.nice屬性為false,format屬性指定的格式如:dd/MM/yyyy

在這種情況下,format屬性將被使用。

 


3 nice屬性為false,format屬性沒有指定

i18n key default
struts.date.format if one is not found DateFormat.MEDIUM format will be used

 

參數

Name

Required

Default

Evaluated

Type

Description

format false   false String 日 期格式
id false   true String  與普通html的id一樣
name true   true String 日 期的值
nice false false true Boolean 是否打印出更nicely的格式

 

例子:
<s:date name="person.birthday" format="dd/MM/yyyy" />
<s:date name="person.birthday" format="%{getText('some.i18n.key')}" />
<s:date name="person.birthday" nice="true" />
<s:date name="person.birthday" />

 


問題1:
<s:date name="model.createDate" format="yyyy-mm-dd"/>老是將日期顯示錯誤,比如數據庫裏明明是2009-03-30,顯示就成了2009-30-31。


解決:應該多看看API。

字母

日期或時間元素

表示

示例

G

Era 標誌符

Text

de>ADde>

y

Year

de>1996de>; de>96de>

M

年中的月份

Month

de>Julyde>; de>Julde>; de>07de>

w

年中的周數

Number

de>27de>

W

月份中的周數

Number

de>2de>

D

年中的天數

Number

de>189de>

d

月份中的天數

Number

de>10de>

F

月份中的星期

Number

de>2de>

E

星期中的天數

Text

de>Tuesdayde>; de>Tuede>

a

Am/pm 標記

Text

de>PMde>

H

一天中的小時數(0-23)

Number

de>0de>

k>

一天中的小時數 (1-24)

Number

de>24de>

K

am/pm 中的小時數(0-11)

Number

de>0de>

h

am/pm 中的小時數(1-12)

Number

de>12de>

m

小時中的分鍾數

Number

de>30de>

s

分鍾中的秒數

Number

de>55de>

S

毫秒數

Number

de>978de>

z

時區

General time zone

de>Pacific Standard Timede>; de>PSTde>; de>GMT-08:00de>

Z

時區

RFC 822 time zone

de>-0800de>

 


當然,數據的日期格式又是另外一回事了,有時我也總會將HH24:mm:ss寫成數據庫的HH24:mi:ss.有時候寫的導數可能也會出現日期格式的問題,因為與數據庫的格式不一樣而出來導入錯誤。還在操作數據庫的時候可能也會有日期格式的困擾,如果用oracle的話,如果你寫的正確的日期格式,用String也可以的。Oracle的to_date函數可以將de>CHARde>, de>VARCHAR2de>, de>NCHARde>, or de>NVARCHAR2de> 類型數據轉換成de>DATEde>數據類型的值. 如果不指定格式,則會用默認的格式。默認的格式包為:de>NLS_TERRITORYde> 。更多的信息應該參考Oracle的文檔了。

 

 


請問Struts2的s:date標簽在action中一定要為date類型嗎?
private Date currentDate; ...... 如果不是,請問long,String,Integer如何用<s:date name ="currentDate" formate =""yyyy-MM-dd"/>

 

 

回答:
s:date標簽使用時,一定要是Date類型。

String型,數值型等其他類型,可以用以下方法: 先在resource文件中定義如下:

format.date_medium={0,date,medium}

format.date_ymd={0,date,yyyy/MM/dd}

format.date_time={0,date,yyyy/MM/dd hh:mm}

format.number_money={0,number,#,##0}

然後就可以自由的format了:

<s:text name="format.number_money">

<s:param name="value" value="salesPrice"/> </s:text>

<s:text name="format.date_ymd">

<s:param name="value" value="salesDate"/></s:text>

 

原帖地址:https://blog.sina.com.cn/s/blog_4dacfb010100vhqk.html

最後更新:2017-04-02 22:16:10

  上一篇:go asp.net未能加載類型Global
  下一篇:go Asp.net中的Impact字體