Java SimpleDateFormat Modèle pour JavaScript Date
J'ai besoin de convertir un Java Date objet d'une chaîne de caractères qui est le même format que JavaScript Dates lorsqu'ils sont convertis en chaînes de caractères. Sur notre serveur, nous avons JavaScript dates qui sont .toString()
'd et ont un format similaire:
Wed Mar 30 2016 00:00:00 GMT-0400 (EDT)
Et j'ai un Java objet Date que je suis en train de convertir une chaîne de même format. Jusqu'à présent, mon SimpleDateFormat
modèle est
EEE MMM dd yyyy '00:00:00'
(Les heures, les minutes et les secondes sera toujours 0) mais je n'arrive pas à trouver le bon modèle pour le fuseau horaire (GMT-0400 (EDT)
)
Merci pour l'aide! Voici le code Java que j'utilise jusqu'à présent dans le cas où il permet de:
SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd yyyy '00:00:00'");
Date date = arrayOfDates[i];
String dateStr = format.format(date);
//Current dateStr = "Wed Mar 30 2016 00:00:00"
MODIFIER
Vaibhav Jain réponse m'a mis sur la piste (Java SimpleDateFormat Modèle pour JavaScript Date)
Le format final j'ai fini par utiliser est:
EEE MMM dd yyyy '00:00:00' 'GMT'Z '('z')'
Merci encore à tous!
- juste pour clarifier
arrayOfDates[i]
a des dates dans le format deWed Mar 30 2016 00:00:00 GMT-0400 (EDT)
ou est-il en millisecondes? arrayOfDates
est de typejava.util.Date[]
et détient les dates qui doivent être analysées dans des chaînes de caractères avec le formatWed Mar 30 2016 00:00:00 GMT-0400 (EDT)
(évidemment pas à cette date exacte, il serait quelque soit la date de laarrayOfDates[i]
est. L'espoir qui aide à clarifier les choses.- Notez que dans le javascript (en fait ECMAScript), Date.le prototype.toString est entièrement la mise en œuvre dépend, s'il peut y avoir certains points communs entre les implémentations, il n'y a pas de certitude de la conformité à un format particulier.
Vous devez vous connecter pour publier un commentaire.
EEE MMM dd yyyy '00:00:00' zZ '('z')'
la réponse m'a vraiment aidé à comprendre, donc je vais l'accepter. Merci!tl;dr
Chaîne d'analyse.
La génération de chaîne.
java.temps
Vous utilisez gênants vieille date-classes de temps, maintenant, de l'héritage, supplanté par le java.les classes de temps.
L'analyse de chaînes
Définir une mise en forme avec motif
DateTimeFormatter
classe.Modernes de codes sont similaires à l'héritage
SimpleDateFormat
codes, mais pas exactement identiques. L'étude de la documentation. Les subtilités de la zone (ou le décalage de codes m'échappe, mais certains d'essai-et-erreur trouvé une combinaison qui semble fonctionner. Tester à fond, comme je n'ai pas, utilisez à vos propres risques.Générer une Chaîne de caractères en standard ISO 8601 format.
Par la façon dont, si possible, je vous suggère d'utiliser la norme ISO 8601 formats plutôt que le format indiqué dans votre Question. Beaucoup plus facile à analyser et plus facile à lire par les humains à travers les cultures.
Spécifier un fuseau horaire nom dans le format de
continent/region
, commeAmerica/Montreal
,Africa/Casablanca
, ouPacific/Auckland
. Ne jamais utiliser les 3-4 abréviation commeEST
ouEDT
ouIST
comme ils sont pas vrai fuseaux horaires, pas normalisée, et même pas unique(!).Génération de chaînes
Convertir n'importe quel
java.util.Date
à son équivalent moderne,Instant
. LeInstantané
classe représente un moment dans le scénario de UTC avec une résolution de nanosecondes (jusqu'à neuf (9) chiffres d'une fraction décimale).À convertir, en quête de nouvelles méthodes ajoutées aux anciennes classes.
Ajuster dans le fuseau horaire désiré.
Générer une chaîne de caractères à l'aide de la même
DateTimeFormatter
objet vu ci-dessus.De code en direct
Voir cet exemple code de vivre dans IdeOne.com.
Sur java.temps
La java.le temps cadre est intégré dans Java 8 et les versions ultérieures. Ces classes permettent d'éviter la pénible vieux héritage date du temps des classes comme
java.util.Date
,Agenda
, &SimpleDateFormat
.La Joda-Time projet, maintenant dans le mode de maintenance, conseille la migration vers le java.le temps classes.
Pour en savoir plus, consultez les Oracle Tutoriel. Et de recherche de Débordement de Pile pour de nombreux exemples et des explications. La spécification est JSR 310.
Où obtenir le java.les classes de temps?
La ThreeTen-Extra projet s'étend java.temps avec d'autres classes. Ce projet est un terrain d'essai pour de possibles futurs ajouts à java.temps. Vous pouvez trouver quelques classes utiles ici comme
Intervalle
,YearWeek
,YearQuarter
, et plus.Pour formater la date exactement comme ça, nous pouvons avoir besoin de format de date et de fuseau horaire séparément, e,g,:
En règle générale, si une date donnée est valide ensuite la date de l'objet créé doit retourner la même date, le mois et l'année de la valeur. Ci-dessous la logique travaillé pour la plupart des cas que j'ai codé.
Exemple: 29-Feb-2018 n'existe pas, mais quand le javascript accepte cette entrée comme Date("2018-02-29"), il crée une valeur à la date du 1-Mars-2018.
Fonction Javascript: