Conversion du format d'heure militaire (hhmm) en format d'heure (hh:mm)<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ai besoin de convertir l'heure militaire au format hhmm, par exemple 1432 ou 725 au format hh:mm, par exemple 14h32 à 7h25. Existe-t-il une formule simple permettant d'effectuer la conversion, ou dois-je utiliser un script pour cela ?Merci.
Re : Conversion du format d'heure militaire (hhhh) en format d'heure (hh:mm)Ça marche! Merci beaucoup. J'ai tellement appris rien qu'en regardant les formules que vous proposez !Re : Conversion du format d'heure militaire (hhhh) en format d'heure (hh:mm)Ma première question est la suivante : si la longueur de la valeur d'heure d'entrée est inférieure à 4 caractères, doit-on supposer qu'il manque des zéros (0) sur le côté gauche de l'heure militaire ?Si tel est le cas, je propose la solution ci-dessous; Il complète la valeur avec des zéros non significatifs, puis effectue la conversion.
standard = Substr( "00", Length( Char( :Military ) ) - 1 ) ||
Char( :Military );
Num( Substr( Char( :standard ), -2 ) ) * 60
+Num(
Substr(
Char( :standard ),
1,
(Length( Char( :standard ) ) - 2)
)
) * 3600;
Re : Conversion du format d'heure militaire (hhhh) en format d'heure (hh:mm)J'ai essayé d'utiliser ce code pour convertir une chaîne dans un format d'heure (hh:mm)
Num( Substr( Char( :Militaire ), -2 ) ) * 60 + Num(
Substr( Char( :Militaire ), 1, (Longueur( Char( :Militaire ) ) - 2) )
) * 3600
Cependant, j'ai réalisé que si la chaîne ne comporte que 2 chiffres, elle ne sera pas convertie. Par exemple, s'il est 26, il ne sera pas converti en 00h26. Cependant, une chaîne à 3 chiffres fonctionne bien (100 devient 1h00)
Comment est-ce ainsi?Re : Conversion du format d'heure militaire (hhhh) en format d'heure (hh:mm)J'ai posté votre code, dans la section formule du nouveau champ, changé le champ en nom de colonne de mon ensemble de données, et cela fonctionne parfaitement !
Num( Substr( Char( :Military ), -2 ) ) * 60 + Num(
Substr( Char( :Military ), 1, (Length( Char( :Military ) ) - 2) )
) * 3600
Merci beaucoup!
Re : Conversion du format d'heure militaire (hhhh) en format d'heure (hh:mm)Salut Jim,
Comment utiliser ce script ? Quelles sont les variables que j'avais besoin de changer ?
Ensuite, le nom de l'ensemble de données est "transaction_data" et le nom de la colonne qui contient l'heure militaire est "DAY" (transaction_data:DAY)
Alors, comment dois-je remplacer ces 2 variables dans votre script et exécuter ?
Désolé pour une question aussi noob.
Re : Conversion du format d'heure militaire (hhhh) en format d'heure (hh:mm)Que diriez-vous de passer de l'heure militaire à l'heure normale ?
Re : Conversion du format d'heure militaire (hhhh) en format d'heure (hh:mm)Encore une autre approche qui évite complètement les chaînes :
dt << New Column( "time",
Numeric,
"Continuous",
Format( "hr:m", 12 ),
Formula( Floor( :Military / 100 ) * 3600 + Mod( :Military, 100 ) * 60 )
);
Re : Conversion du format d'heure militaire (hhmm) en format d'heure (hh:mm)Jim, votre solution a parfaitement fonctionné. J'aime la façon dont tout est resté sous la forme numérique. Merci beaucoup!
Re : Conversion du format d'heure militaire (hhmm) en format d'heure (hh:mm)Byron, merci beaucoup pour vos conseils.La méthode que vous proposez fonctionne ; cependant, il conserve la variable dans l'état du caractère.
J'ai enregistré votre script pour de futurs cas particuliers !
Re : Conversion du format d'heure militaire (hhhh) en format d'heure (hh:mm)Voici une autre façon de faire la même chose que Bryon montre.Ma version va directement à une valeur de temps numérique, plutôt que de créer une valeur de caractère qui est ensuite saisie.
Noms par défaut ici ( 1 ) ;
// Créer un exemple de table de données avec des temps militaires .....
// La colonne peut être numérique ou caractère...la conversion
// la formule gère les deux
dt = Nouveau tableau ( "Sans titre 3" , Ajouter des lignes ( 2 ) , Nouvelle colonne ( "Militaire" , Numérique , "Continu" , Format ( "Meilleur" , 12 ) , Définir les valeurs ( [ 1421 , 923 ] ) ) ) ;
// Les fonctions wait() sont juste là pour ajouter un effet dramatique 
Attendez ( 2 ) ;
// Ajoute une nouvelle colonne pour contenir les heures converties
// Utilise un format d'heure puisque la conversion créera
// une valeur qui est le nombre de secondes depuis minuit
dt << Nouvelle colonne ( "temps" , Numérique , "Continu" , Format ( "h:m" , 12 ) ) ;
Attendez ( 2 ) ;
// Exécuter sur toutes les lignes et effectuer la conversion
// La formule fonctionnera comme une formule de colonne en supprimant simplement
// le ":time="
Pour chaque ligne (
: temps = Numéro ( Substr ( Carboniser ( : Militaire ) , - 2 ) ) * 60 +
Numéro ( Substr ( Carboniser ( : Militaire ) , 1 , ( Longueur ( Carboniser ( : Militaire ) ) - 2 ) ) ) * 3600
) ;
Re : Conversion du format d'heure militaire (hhhh) en format d'heure (hh:mm)Il existe probablement un moyen plus simple de le faire; cependant, cela fonctionne plutôt bien.
Étape 1
Répéter( "0", 4 - Longueur( Char(
ébut ) ) ) || Car(
ébut )
Transforme le numéro de départ en un caractère à 4 chiffres rempli de zéros (ceci est également pratique pour les codes postaux)
Étape 2
Gauche( :Etape 1, 2 ) || ":" || Droite ( :Étape 1, 2 )
Insère deux-points entre les heures et les minutes
Étape 3
Format( Informat( :Char Heure 24 h, "h:m" ), "h:m" )
Cette formule prend le caractère 24 heures et le transforme en nombre de secondes après minuit, puis transforme les secondes en 12 heures.
Informat évalue une chaîne de caractères et renvoie un nombre
format évalue une chaîne numérique et renvoie un caractère
| Commencer |
Étape 1 |
Étape 2 |
Étape 3 |
| 3 |
0003 |
00:03 |
00h03 |
| 30 |
0030 |
00:30 |
00h30 |
| 1130 |
1130 |
11h30 |
11H30 DU MATIN |
| 1830 |
1830 |
18h30 |
18H30 |
........
ou vous pouvez tout faire en une seule étape "simple" avec une seule formule
Format(
Informat(
Left( Repeat( "0", 4 - Length( Char( :Start ) ) ) || Char( :Start ), 2 ) || ":" ||
Right( Repeat( "0", 4 - Length( Char( :Start ) ) ) || Char( :Start ), 2 ),
"h:m"
),
"h:m"
);
Je garde une collection de formules féroces qui sont recyclées pour des cas particuliers.