Question

Est-il possible d'analyser une chaîne au format HH: MM dans un objet Date (ou autre) à l'aide des bibliothèques standard?

Je sais que je peux analyser quelque chose du type "17/09/2008 10h30". dans un objet Date à l'aide de

var date:Date = new Date(Date.parse("9/17/2008 10:30");

Mais je veux analyser 10h30 seulement. Le code suivant ne fonctionnera pas.

var date:Date = new Date(Date.parse("10:30");

Je sais que je peux utiliser un RegEx personnalisé pour le faire assez facilement, mais il semble que cela devrait être possible avec l’API Flex existante.

Était-ce utile?

La solution

Pour répondre à votre question précise: non, il n’existe pas de fonction de bibliothèque permettant de faire ce que vous voulez faire, mais il n’existe pas non plus de fonction de bibliothèque permettant d’analyser les dates au format ISO, au format allemand, au format suédois, aux dates où les années sont en chiffres romains, etc.

Pourquoi ne pas utiliser des expressions régulières? C’est ce à quoi ils servent.

Autres conseils

Si vous devez utiliser le format exact que vous avez spécifié, vous devez l'analyser vous-même.

Voici un exemple simple (non testé):

var str:String = "9/17/2008 10:30"

var items:Array = str.split(" ");
var dateElements:Array = items[0].split("/");
var timeElements:Array = items[1].split(":");

var n:Date = new Date(dateElements[2],
                        dateElements[0],
                        dateElements[1].
                        timeElements[0],
                        timeElements[1]);

Si l'heure n'est pas exprimée en 24 heures, il n'y a aucun moyen de vérifier si AM ou PM (le code suppose que AM).

Comme solution simple et gratuite, vous pouvez utiliser certaines méthodes statiques de DateField:

  • DateField.stringToDate (valueString: String, inputFormat: String): Date
  • DateField.dateToString (valeur: Date, outputFattern: String): String

Mais malheureusement, ils ne prennent pas en charge les heures / minutes / secondes (uniquement la date).

Dans votre cas particulier: l'objet Date contient toujours aussi un "date". information .. si ce n’est pas important, ne pourriez-vous pas simplement concaténer une chaîne de date standard avant d’analyser?

Avez-vous envisagé de suspendre vos achats au 01/01/2000 " à la chaîne de temps, puis l'application Date?

Alternativement, il y a probablement un générateur de jeton qui prendra l’entrée et la scindera en un: vous donnant un tableau de chaînes que vous pouvez convertir en entiers. Un tokenizer n'est pas difficile à écrire non plus et peut être amusant s'il n'en existe pas en flex.

-Adam

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top