J'utilise "Red Programming Language" version "0.6.4" sur Windows et je crée une application en ligne de commande.
Je ne connais pas beaucoup la langue rouge et je ne comprends pas beaucoup de choses. J'ai parcouru la documentation sur les "travaux en cours" à l'adresse ( https://doc.red-lang.org / fr / ) avant de demander ici.
J'ai besoin d'une chaîne de date et d'heure au format yyyymmdd_hhmm.
J'ai commencé avec un code comme celui-ci:
Red [] dt: to string! now/precise print dt
qui me donne 2019 mais j'ai besoin des autres choses le mois, le jour et l'heure pour obtenir quelque chose comme 20190608_2146
J'ai essayé aussi:
Red [] dt: to string! now/year print dt
ce qui me donne 8-Jun-2019/21: 47: 51.299-07: 00 mais encore une fois, ce dont j'avais besoin était de 20190608_2147
Question:
Comment modifier le code ci-dessus pour obtenir quelque chose comme 20190608_2147 de now?
Merci.
3 Réponses :
J'ai écrit un script pour Rebol et Red appelé 'Form Date' qui formatera les dates / heures de la même manière que STRFTIME. La version rouge est ici .
date: now
rejoin [ ; reduce-join
form date/year
pad/left/with date/month 2 #"0"
pad/left/with date/day 2 #"0"
"_"
pad/left/with date/hour 2 #"0"
pad/left/with date/minute 2 #"0"
]
Le script contient des extraits de code individuels utilisés pour mettre en forme les différents composants d'une date! valeur.
Vous n'avez pas besoin du script pour votre exemple spécifique, vous pouvez extraire et joindre les différents composants ainsi:
do %form-date.red probe form-date now "%Y%m%d_%H%M" print first spec-of :form-date
Comme la solution ci-dessus a quelques problèmes sous Rebol2, voici une variante qui fonctionne avec Rebol et Red de la même manière
date: now
rejoin [
date/year
next form 100 + date/month
next form 100 + date/day
"_"
next form 100 + date/time/hour
next form 100 + date/time/minute
]
Voici une autre façon:
rejoin [
now/year
pad/left/with now/month 2 #"0"
pad/left/with now/day 2 #"0"
"_"
pad/left/with first (now/time) 2 #"0"
pad/left/with second (now/time) 2 #"0"
]
Le rouge a un pad , donc la réponse de rgchris est bonne. Pourtant, il n'y a pas besoin de date: now comme l'a fait rgchris:
rejoin [
now/year
either 10 > x: (now/month) [join "0" x][x]
either 10 > x: (now/day) [join "0" x][x]
"_"
either 10 > x: first (now/time) [join "0" x][x]
either 10 > x: second (now/time) [join "0" x][x]
]
Il y a certainement un besoin pour la date: now . Si vos multiples appels NOW chevauchent une limite de minuit, vous obtiendrez au mieux des résultats incorrects.