2017-10-13 5 views
0

J'ai passé beaucoup de temps à ce sujet, cela m'a rendu fou.Comment puis-je afficher les données de type calendrier dans FreeMarker

Dans contrôleur Java, var MyCalendar est le calendrier Type.Put dans le modèle

model.addAttribute("mycalendar", mycalendar); 

dans le modèle Freemarker:

${pp} 

erreur comme ceci:

java.util.GregorianCalendar[time=1507864967342,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2017,MONTH=9,WEEK_OF_YEAR=41,WEEK_OF_MONTH=2,DAY_OF_MONTH=13,DAY_OF_YEAR=286,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=2,AM_PM=0,HOUR=11,HOUR_OF_DAY=11,MINUTE=22,SECOND=47,MILLISECOND=342,ZONE_OFFSET=28800000,DST_OFFSET=0] 

Comment puis-je montrez ce type de calendrier correctement comme 'aaaa-MM-jj HH: mm: ss'

Répondre

1

Vous devez transformer votre java.util.Calendar en java.util.Date, puis appliquer une commande intégrée freemarker pour formater:

${pp.time?string["yyyy-MM-dd HH:mm:ss"]} 
+0

Il fonctionne, merci toi! –

+0

Pour les lecteurs ultérieurs: Notez que vous pouvez également écrire '$ {pp.time? Datetime}', auquel cas il sera formaté selon le paramètre de configuration 'datetime_format'. ("? datetime" est nécessaire ici à partir d'un 'java.util.Date ', il est impossible de dire de manière fiable si cela signifie être une valeur date-seule, heure seule ou une valeur date-heure.) – ddekany

-1

S'il vous plaît utiliser ci-dessous le code, il peut utile pour vous

 String date_s = "2011-01-18 00:00:00.0"; 

     // *** note that it's "yyyy-MM-dd hh:mm:ss" not "yyyy-mm-dd hh:mm:ss" 
     SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
     Date date = dt.parse(date_s); 

     // *** same for the format String below 
     SimpleDateFormat dt1 = new SimpleDateFormat("yyyy-MM-dd"); 
     System.out.println(dt1.format(date));