Comment puis-je obtenir le premier et le dernier jour du mois avec DateTime de Perl?
Est-il un moyen pour déterminer le premier jour du mois (min jour) et le dernier jour d'un mois (max jour), étant donné que le mois d'entrée, à l'aide de DateTime
en perl?
Jusqu'à présent, j'ai compris comment passer dans un premier date de, date de la dernière à me donner une fourchette de jours.
Mais ce que je veux faire, c'est de passer dans un mois, c'est un argument, disons 201203
et min retour, maxday.
Est-ce possible avec DateTime?
Aussi, je veux changer le format de la date masque de AAAAMMJJ à AAAA-MM-JJ.
use strict;
use warnings;
use DateTime;
unless(@ARGV==2)
{
print "Usage: myperlscript first_date last_date\n";
exit(1);
}
my ($first_date,$last_date)=@ARGV;
my $date=DateTime->new(
{
year=>substr($first_date,0,4),
month=>substr($first_date,4,2),
day=>substr($first_date,6,2)
});
while($date->ymd('') le $last_date)
{
print $date->ymd('') . "\n";
#$date->add(days=>1); #every day
$date->add(days=>30);
}
Résultats Attendus:
2012-03-01
2012-03-31
source d'informationauteur cjd143SD
Vous devez vous connecter pour publier un commentaire.
DateTime ne date calculs pour vous. Vous pouvez dire
ymd
le personnage que vous souhaitez utiliser comme séparateur:Il existe de nombreux exemples dans "Le dernier jour du mois. Tout court" sur Perlmonks, que j'ai trouvé sur Google "perl datetime dernier jour du mois".
Et voici un Temps::Moment exemple. C'est un plus maigre, plus rapide sous-ensemble de DateTime:
Il est surprenant que ni
DateTime
exemple utilise la spéciale constructeurlast_day_of_month
pour que (exemple de la courtoisie de brian d foy):Comme une alternative, il est le noyau du module Perl
Time::Piece
.Pour le mois en cours et de l'année:
Plus généralement, quelque chose comme:
Premier jour:
Dernier jour:
Tandis que la classe DateTime offre un constructeur pour ce faire, le moyen le plus efficace pour obtenir le dernier jour du mois à partir d'un objet DateTime est de demander l'objet de la calculer. La classe expose une méthode non documentée _month_length() qui calcule le dernier jour du mois de manière très efficace. Avec votre objet DateTime appelé $date, vous pouvez essayer de
Cette méthode est sans-papiers, de sorte qu'il peut ou ne peut pas être pris en charge par votre version de DateTime. À utiliser avec prudence.