1
votes

Comment obtenir une chaîne de date et d'heure formatée à partir de «maintenant»?

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.


0 commentaires

3 Réponses :


3
votes

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


0 commentaires

2
votes

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 
]


0 commentaires

-3
votes

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]
] 


1 commentaires

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.