Je pensais que cela allait être très simple mais je suis vraiment à l'écart des options maintenant. Je veux aboutir à 15 minutes à partir d'un moment donné. p>
exemple Mon temps est 15h04 Je veux aboutir à 15 minutes à 14h49. J'ai recherché des solutions sur Internet, mais il n'y a pas de module Perl qui peut m'aider. P>
6 Réponses :
Convertissez l'heure à unix Time, par exemple l'heure actuelle: $ Unixtime = heure (); code> puis soustraire 15 * 60 à partir de celui-ci, puis convertir en une belle chaîne avec quelque chose comme
Vous pouvez utiliser DateTime code> :
Et s'il est juste préoccupé par le temps et non des dates, il peut essayer TIME :: HORLOGE A >
Je pense que ce qui précède aura résolu mon problème, ceux ci-dessous n'utiliseront pas le format que je veux, mais cela m'a aidé à apprendre beaucoup. J'ai pu répondre à la solution suivante sous-time {My ($ TIME) = @_; mon @splittime = Split (':', $ TIME); ma $ heure = $ splittime [0]; mon $ min = $ splittime [1]; Si ($ min <15) {$ min = ($ min + 60) -15; $ heure- = 1; } else {$ min = min-15; } Retour "Heure $: $ min"; } J'appelle cette fonction et son retour renvoyé le temps soustrait. Merci
Et voir DateTime code>.
perl -MClass::Date -e 'my $d=Class::Date->new("2011-07-13 15:04:00"); my $d2 = $d-"15m"; print $d2, "\n";'
Output:2011-07-13 14:49:00
Eh bien, tout dépend de la façon dont votre temps est stocké. Je préfère utiliser un pour la sortie J'utilise le time_t code> comme retourné par l'heure code> intégré. posix Code> Module P> print POSIX::strftime( '%Y-%m-%d %T', localtime($before1) );
Vous pouvez utiliser la sous-routine ci-dessous si vous n'êtes préoccupant que du temps non préoccupé par la date: Disclamer: strong> ceci était la solution OP utilisée , il l'a mentionné dans des commentaires dans la réponse ci-dessus (dans la réponse de @ Eugene). P> p>