La Date d'aujourd'hui, en Perl, en MM/JJ/AAAA
Je travaille sur un programme en Perl au travail et collé sur (ce que je pense) un problème trivial. J'ai tout simplement besoin de construire une chaîne au format '06/13/2012' (toujours 10 caractères, donc 0 pour les nombres inférieurs à 10).
Voici ce que j'ai à ce jour:
use Time::localtime;
$tm=localtime;
my ($day,$month,$year)=($tm->mday,$tm->month,$tm->year);
- Si vous avez tout dit dans la question, considérez l'utilisation de l'ambiguïté et triable format ISO 8601
YYYY-MM-DD
plutôt queMM/DD/YYYY
.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire rapidement, en n'utilisant qu'un POSIX fonction. Si vous avez des tas de tâches avec les dates, voir le module DateTime.
Vous pouvez utiliser
Heure: à la Pièce
, qui ne devraient pas nécessiter d'installation car c'est un module de base et a été distribué avec Perl 5 depuis la version 10.sortie
Mise à jour
Vous préférerez peut-être utiliser la
dmy
méthode, qui prend un seul paramètre qui est le séparateur à utiliser entre les champs de la raison, et évite d'avoir à spécifier un plein format de date/heureCe qui produit un résultat identique à celui de ma solution originale
dmy
,mdy
etymd
, etdate
est un alias pourymd
. Tous produisent des dattes avec la norme tiret séparateur par défaut, et peut être passé une alternative séparateur, donclocaltime->ymd
produit2015-09-28
et pas20150928
comme vous le dites. C'est la grande faiblesse de ces méthodes-ils n'ont pas en eux-mêmes décrivent ce qu'ils font, c'est pourquoi j'ai choisistrftime('%m/%d/%Y')
Time::Piece
a été d'abord incorporé dans "expérimentale" de la version 9.5 et n'a jamais été supprimé, La première version stable après que serait la version 10.0, donc si vous avez une version 10.1 sansTime::Piece
puis quelqu'un a explicitement été retirée de l'installation. Dans tous les cas, le CPAN bibliothèque est l'un de Perl de plus grandes forces, et il est stupide de se limiter aux seuls modules de base.This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi
sur CentOS. Mais il est possible que notre sysadmin bricolé avec elle un peu, je ne peut pas vérifier que.perl-5.10.1.tar.gz
à partir de http://www.cpan.org/src/ et décompressez-le, vous verrez queTime::Piece
est dans leext
sous-dossier àperl-5.10.1\ext\Time-Piece
. Si votre administrateur a choisi de construire perl à partir de zéro, alors il n'aurait plus à répondre à aucun pour la question Ce que les extensions voulez-vous inclure? au lieu de sélectionner la valeur par défaut, et vous avez une installation sans plus des modules de base.%-m/%-d/%Y
(note - après %) comme expliqué dans le POSIX documentation.expression renvoie
06/13/2012
Si vous aimez faire les choses à la dure:
Time::Piece
est apparu en core dans 5.9.5perldoc perlhist | perl -ne 'die "$_\n" if m/5.9.5.*20[01].{8}/'
dit que 5.9.5 a été publiée en 2007-Juil-07Code Perl pour les systèmes Unix:
chomp
travaille également pour la suppression des caractères de saut de ligne:chomp $current_date
MM/DD/YYYY
format. Je préfère le format ISO 8601YYYY-MM-DD
format de moi-même, mais cela ne permet pas de répondre correctement à la question.Le formatage des nombres avec zéro se fait facilement avec "sprintf", une fonction intégrée en perl (documentation avec: perldoc perlfunc)
Cela vous donne:
14.05.2014