2009-05-14 7 views
3

En Javascript, j'ai cette fonction pour afficher la date actuelle sur notre tête de page:Est-il possible d'utiliser JSTL pour afficher une date dans le fuseau horaire du client?

<SCRIPT language="Javascript"> 
    var today = new Date(); 
    document.write(today.toLocaleDateString()); 
</SCRIPT> 

Je voudrais le faire via JSTL, mais je ne suis pas sûr que ce soit possible. Jusqu'à présent, j'ai ce fragment de code:

<jsp:useBean id="date" class="java.util.Date" /> 
<fmt:formatDate value="${date}" type="date" pattern="EEEE, MMMM dd, yyyy"/> 

Parce que la date est en cours de création sur le serveur, il ne peut pas représenter la date du client. Je crois que je peux définir l'attribut timeZone de la fonction formatDate, mais je ne sais pas comment saisir le fuseau horaire du client. Quelqu'un peut-il offrir une suggestion?

Merci!

Répondre

2

Toutes les informations sur le serveur est dans la requête HTTP qui ne contient aucune information concernant l'heure ou le fuseau horaire.

Alors vous avez deux options:

  • l'aide d'un cookie, vous pouvez stocker le fuseau horaire, puis le récupérer dans le côté serveur. Le problème ici est que vous devez attendre la deuxième requête pour utiliser la valeur timezone.

  • Utilisation d'AJAX, avec javascript et un objet XMLHttpRequest vous pouvez pousser 'new Date(). GetTimezoneOffset()' valeur au serveur, stocker dans une session var

Peut-être que l'une des options sont trop si vous voulez juste afficher le fuseau horaire

+0

C'est certainement une idée créative, mais plus compliquée que le SCRIPT que j'ai actuellement ... –

+0

Oui, je l'affiche cette réponse juste si connaître le fuseau horaire est critique. Toutes les informations du serveur sont dans la requête HTTP qui ne contient aucune information concernant l'heure ou le fuseau horaire, donc je suppose qu'il est impossible de le savoir si vous n'utilisez pas AJAX ou un cookie –

1

La seule façon que je peux voir de faire ceci sans demander à l'utilisateur quelques informations est formater la date avec javascript. Pas exactement la plus jolie solution, je pourrais ajouter

<script ...>document.write(<javascript to format the date>)</script> 

Alternativement, vous pourriez envisager d'afficher le fuseau horaire dans la date formatée. De cette façon, l'utilisateur sait au moins quel fuseau horaire vous utilisez.

Questions connexes