Définir un fuseau horaire par défaut pour f: convertDateTime

j'utilise JSF1.2 et j'ai un petit problème avec les fuseaux horaires.

calendrier respecte mon fuseau horaire et enregistrer le temps correct dans la base de données. Quand je le montre en utilisant un outputtext h:avec un f: convertDateTime il montre la mauvaise date (je pense avec le fuseau horaire par défaut).

je peux faire quelque chose comme:

<h:outputText value="#{atividade.atividade.dataCriacao.time}">
  <f:convertDateTime pattern="#{msg.formatoDataCalendario2}" timeZone="America/Sao_Paulo" />
</h:outputText>

formatoDataCalendario2 = JJ/MM / aaaa, HH:mm dans les messages.propriété.

je peux mettre le fuseau horaire dans les messages trop, mais je crois qu'il ont un peu de configuration que je pourrais utiliser.

35
demandé sur Matt Johnson 2011-09-20 23:50:26

2 réponses

JSF date/heure convertisseurs de défaut de spécification pour le fuseau horaire UTC. Si vous voulez utiliser un fuseau horaire différent, alors vous devez vraiment le spécifier vous-même dans le convertisseur. Ou, si vous avez 100% de contrôle sur l'environnement d'exécution de la production, alors depuis JSF 2.0 vous pouvez définir son fuseau horaire système au fuseau horaire désiré et ajouter le paramètre de contexte suivant à web.xml :

<context-param>
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
    <param-value>true</param-value>
</context-param>

de cette façon JSF utilisera le fuseau horaire du système tel qu'obtenu par TimeZone#getDefault() comme fuseau horaire par défaut du convertisseur.

veuillez noter que l'objet java.util.Date en lui-même ne pas stocker des informations de fuseau horaire. Il est également toujours par défaut à UTC timezone. Gardez cela à l'esprit lorsque vous traitez les dates/heures soumises.

voir aussi:

89
répondu BalusC 2017-05-23 12:34:45

pour afficher correctement la date, vous devez modifier seulement dans votre web.xml

<context-param>
    <param-name>javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE</param-name>
    <param-value>true</param-value>
</context-param>

et dans votre fichier xhtml

<h:outputText value="#{report.date}">
    <f:convertDateTime pattern="dd-MMM-yyyy" />
</h:outputText>

C'est un problème de fuseau horaire. Le contexte param devrait le corriger.

-3
répondu amit 2013-01-02 12:56:11