Skip to content

Instantly share code, notes, and snippets.

@yoshiki
Created August 5, 2010 02:00
Show Gist options
  • Save yoshiki/509106 to your computer and use it in GitHub Desktop.
Save yoshiki/509106 to your computer and use it in GitHub Desktop.
#!/usr/bin/env perl
use strict;
use warnings;
use DateTime;
use DateTime::Format::MySQL;
my %age_of = (
0 => '未就学児',
6 => '小1', 7 => '小2', 8 => '小3', 9 => '小4', 10 => '小5', 11 => '小6',
12 => '中1', 13 => '中2', 14 => '中3',
15 => '高1', 16 => '高2', 17 => '高3',
18 => '大学1', 19 => '大学2', 20 => '大学3', 21 => '大学4',
22 => '社会人',
);
my $now = DateTime->now;
my $base_date = DateTime::Format::MySQL->parse_datetime(
sprintf '%04d-04-01 00:00:00', $now->year - ($now->month < 4) * 1
);
my $old_date = $base_date;
my $old_age;
my $old_grade;
for my $age ( sort { $a <=> $b } keys %age_of ) {
if ( !$old_grade ) {
$old_grade = $age_of{ $age };
$old_age = $age;
next;
}
my $end_date = $old_date->ymd;
$old_date->subtract( years => ( $age - $old_age ) )->add( days => 1 );
my $start_date = $old_date->ymd;
print "$start_date -> $end_date($old_grade)\n";
$old_date->subtract( days => 1 );
$old_grade = $age_of{ $age };
$old_age = $age;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment