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.