Preuve de format de date en fonction de la culture
Je suis à l'aide d'un contrôle pour un calendrier contextuel du sélecteur de dates. Il utilise une fonction javascript, SetText, pour définir la zone de texte à la date donnée. Je ne peux pas changer quoi que ce soit dans le contrôle de calendrier lui-même, mais je peux remplacer la SetText fonction. La SetText javascript prend juste la zone de texte nom et la valeur de la date dans un format de chaîne et définit la zone de texte à la chaîne.
Le problème:
J'ai besoin d'afficher la date au format "30 avril".
Facile à faire. Utiliser la méthode getMonth() et la fonction getDate() où je peux analyser les informations à partir de là.
Maintenant, je dois m'assurer que cette affiche correctement les différentes cultures. Par exemple, le royaume-UNI dates de spectacles comme "le 30 avril". Depuis le code-behind(c#) pourrait être l'envoi de la date dans le royaume-UNI, format comment puis-je savoir dans le javascript qu'ils utilisent royaume-UNI(jj/mm/aaaa) et pas NOUS(mm/jj/aaaa)?
Les navigateurs navigateur de la langue peut être réglé sur un réglage pendant que le serveur est à l'autre à cause d'un 4 janvier, en avril, 1 incompatibilité.
Le Datejs de la bibliothèque, qui comprend une foule de fonctions de date qui vous permettent de format et d'analyser des dates dans une variété de formats et en utilisant le format de date des chaînes de caractères. datejs.com
OriginalL'auteur Joe Stropich | 2009-04-30
Vous devez vous connecter pour publier un commentaire.
Vous utilisez le Microsoft Framework Ajax, ce cadre définit un ensemble de "côté client, les extensions de type de", qui fournissent des fonctions supplémentaires ou "extensions" pour le JavaScript les types de base.
La Les Extensions De Type Date est ce que vous êtes à la recherche pour, plus précisément le Date.parseLocale fonction.
Avec cette fonction vous pouvez convertir une chaîne de caractères, à l'aide d'un format donné.
Vous pouvez synchroniser votre côté serveur et côté client de la culture par la mise en au ScriptManager.EnableScriptGlobalization true à la propriété, et l'utilisation de la Date.parseLocale fonction sans spécifier n'importe quel format.
Donner un coup d'oeil à cet article:
OriginalL'auteur CMS
Voir toLocaleString et les fonctions associées.
toLocaleDateString vous permet de vous rapprocher au moins. Je devrais également mentionner les paramètres régionaux différence est vraiment fréquent avec les dates numériques (11/22/09 pourrait être 12 Nov ou Dec 11), mais lorsque vous utilisez un nom de mois ou abrév, le sens doit être clair, n'importe où.
OriginalL'auteur jiggy
Si vous contrôlez le backend, pourquoi ne pas simplement envoyer un horodatage et le pousser dans
Date
objet?Que pour la mise en forme sur le côté client, puisque j'étais déjà à l'aide de Dojo, j'ai résolu ce problème en utilisant
dojo.date.locale.format
. Il a été complètement indolore.Tutoriel: http://docs.dojocampus.org/dojo/date/locale
Doc API:
http://api.dojotoolkit.org/jsdoc/1.3/dojo.date.locale.format
Format de Date descriptions: http://www.unicode.org/reports/tr35/tr35-4.html#Date_Format_Patterns
OriginalL'auteur Justin Johnson
Trois choses que vous pourriez utiliser:
1) toLocaleString - Comme déjà suggéré. Le problème, c'est lors de l'envoi d'une chaîne de "4/1/2009" cela peut entraîner un couple de choses. 4 janvier ou le 1er avril.
2) navigator.langue et navigator.systemLanguage - Après que vous obtenez la chaîne de date, vous pouvez vérifier pour voir dans quelle langue le système est en et analyser la date à partir de là. Le problème et la solution 1 est ce que si vous avez un serveur UK et les navigateurs de la machine, c'est NOUS. Vous aurez le code-behind de l'envoi du 1er avril comme 1/4/2009 où le javascript lire la chaîne de caractères comme quelque langue que ce soit les clients les navigateurs. Ainsi, au royaume-UNI serveur et NOUS navigateur va vous donner un mauvais résultat.
3) Utilisez le Code Derrières de la Culture - Créer une variable javascript que lorsque la page se charge, il va appeler une fonction dans votre code derrière qui renvoie
this.Page.Culture
à partir de là, vous saurez ce que la culture la chaîne est renvoyée. Cela permettra d'éliminer l'incompatibilité que les deux premières solutions peuvent causer. Il faudra un peu de travail supplémentaire pour s'assurer qu'il s'affiche correctement, mais au moins vous serez en mesure d'utiliser la chaîne, sans avoir la possibilité de décalage des cultures.OriginalL'auteur Joe Stropich
toLocaleDateString serait une meilleure solution que toLocaleString pour votre problème comme il ne comprend pas le temps (que vous ne demandez la date).
OriginalL'auteur Eli Grey
La bibliothèque JavaScript open-source Date.js a quelques grandes méthodes pour le formatage des dates, ainsi qu'il prend en charge un tas de langues:
Date.js chez Google Code: http://code.google.com/p/datejs/
Si vous voulez bien formaté dates /heures, vous pouvez juste passer une chaîne de mise en forme (à peu près identiques à celles utilisées dans les .NET Framework) dans n'importe quel objet Date du
.toString()
méthode.Il dispose également d'un ensemble de cultures qui vous permettent de simplement inclure le script approprié pour cette culture.
Si vous souhaitez gérer vous-même (comme nous le faisons dans nos applications), vous pouvez trouver des ressources qui vous donne la liste des chaînes de ressources pour une culture donnée. En voici une qui montre la mise en forme des cordes pour une tonne de cultures: http://www.transactor.com/misc/ranges.html
OriginalL'auteur mckamey
Que vous utilisez ASP.NET ensuite, vous pouvez également utiliser ASP.NET Ajax. Si oui, il y a deux propriétés sur le ScriptManager qui sont de l'utiliser pour vous:
EnableScriptLocalization - Obtient ou définit une valeur qui indique si le contrôle ScriptManager rend les versions localisées de fichiers de script.
EnableScriptGlobalization - Obtient ou définit une valeur qui indique si le contrôle ScriptManager rend script qui prend en charge l'analyse et la mise en forme de la culture de l'information spécifique.
Lorsque vous activez ces deux (true), alors ASP.NET Ajax rallonges etc. devrait automatiquement être localisée dans la culture spécifiée dans le web.config:
Par exemple, la définition de cette volonté de localiser la AjaxControlToolkit Calendrier dans votre spécifiés par la culture.
Même si vous ne l'utilisez PAS ASP.NET Ajax ajouter un ScriptManager et permettant la localisation de vous donner une utilité variable javascript appelé
__cultureInfo
qui contient un tableau JSON localisées de formiate, tels que les devises, les dates etc.OriginalL'auteur Dan Diplo
J'ai résolu ce problème en utilisant Datejs comme
(dans votre cas, vous pouvez obtenir de la culture de navigateur.systemLanguage (ou le navigateur.browserLanguge etc) et d'ajouter une balise script dans l'en-tête avec l'attribut src pointant vers le chemin approprié)
où d est tout l'objet date
(J'ai essayé en utilisant la Date.aujourd'hui().toShortDateString (), mais il a été lancer une exception. (CultureInfo objet JSON a une structure différente de ce que la fonction attend).
OriginalL'auteur Yasir Laghari