2013-02-26 29 views
10

Tôi có một ngày $ được định nghĩa là "ngày trong tuần, ngày tháng, năm" cũ: Thứ Ba, ngày 26 tháng 2 năm 2013

Tôi không biết $ date được xác định nhưng tôi muốn thêm giờ này $ date variable, hoặc tạo một biến với giờ, bạn có biết làm thế nào tôi có thể đặt nó trong tập tin .vm?

Trả lời

20

Velocity provides a DateTool class cho ngày định dạng. Bạn sẽ cần phải đặt một thể hiện của lớp này vào bối cảnh tốc độ của bạn:

context.add("date", new DateTool()); 

Sau đó, bạn có thể sử dụng một lệnh định dạng như:

$date.format('EEE, MMM d, yyyy at ha', $myDate) 

để có được một cái gì đó giống như Tuesday, February 26, 2013 at 11AM

+0

tôi có thể đưa dòng tin trong hồ sơ .vm và tôi sẽ nhận được một giờ formated như tôi muốn? –

+0

Thật không may tôi đã đặt nó và nó chỉ cho thấy "EEE, MMM d, yyyy tại ha" thay vì giá trị của nó, bạn có biết những gì có thể được? –

+7

Nếu đó là một trường hợp thì DateTool không có trong VelocityContext của bạn. Chỉnh sửa ngữ cảnh vận tốc của bạn như thế này trong các tệp java của bạn: 'context.add (" date ", new DateTool());' –

2

Một trong những sao lưu các lớp Java phải đặt nó vào Context. Nếu bạn muốn định dạng ngày khác nhau, bạn có thể làm điều đó trong lớp đó.

Một tùy chọn khác là đặt đối tượng Ngày tháng thô vào ngữ cảnh, sau đó gọi phương thức trong mẫu Velocity để định dạng nó. Nếu cần, bạn có thể vượt qua Apache Date DateUtils hoặc một lớp trợ giúp khác cho khuôn mẫu (xem this answer).

+0

Tôi không thể đặt một thứ gì đó vào tệp mẫu .vm sẽ làm những gì tôi cần? –

+0

Loại '$ date' là gì? Nếu không chắc chắn, hãy đặt '$ date.getClass()' trong .vm của bạn. Nếu đó là một String, thì không, bạn sẽ phải thực hiện định dạng ở phía Java. Nếu đó là một ngày, sau đó có, bạn có thể gọi các phương thức trong .vm để định dạng nó. –

7

giải pháp thay thế mà không cần thêm sự phụ thuộc hoặc sửa đổi mã:

#set($String = '')## 
$String.format('%1$tY%1$tm%1$td%1$tH%1$tM%1$tS', $date) 

Kết hợp từ twoother câu trả lời.

+0

Không biết những gì đã thay đổi nhưng thủ thuật này không hoạt động với plugin nguyên mẫu maven sử dụng Velocity. Tôi có thể gọi các phương thức không tĩnh trên cá thể String, nhưng không gọi là 'định dạng'. –

+0

@AleksandrKravets Có thể là câu trả lời của Gus ở đây: https://stackoverflow.com/questions/2329191/calling-class-methods-static-from-inside-a-velocity-view-page/15126547#15126547 giải thích điều này. – hcg

2

Từ các tài liệu:

Symbol Meaning     Presentation  Example 
    ------ -------     ------------  ------- 
    G  era designator   (Text)    AD 
    y  year     (Number)   1996 
    M  month in year   (Text & Number)  July & 07 
    d  day in month   (Number)   10 
    h  hour in am/pm (1~12) (Number)   12 
    H  hour in day (0~23)  (Number)   0 
    m  minute in hour   (Number)   30 
    s  second in minute  (Number)   55 
    S  millisecond    (Number)   978 
    E  day in week    (Text)    Tuesday 
    D  day in year    (Number)   189 
    F  day of week in month (Number)   2 (2nd Wed in July) 
    w  week in year   (Number)   27 
    W  week in month   (Number)   2 
    a  am/pm marker   (Text)    PM 
    k  hour in day (1~24)  (Number)   24 
    K  hour in am/pm (0~11) (Number)   0 
    z  time zone    (Text)    Pacific Standard Time 
    '  escape for text   (Delimiter) 
    ''  single quote   (Literal)   ' 

    Examples: "E, MMMM d" will result in "Tue, July 24" 
      "EEE, M-d (H:m)" will result in "Tuesday, 7-24 (14:12)" 

Hy vọng rằng sẽ giúp

Các vấn đề liên quan