Skip to content

Instantly share code, notes, and snippets.

@note103
Created April 25, 2016 11:00
Show Gist options
  • Select an option

  • Save note103/d1aaff264e551d6ea4eb22ee3621847b to your computer and use it in GitHub Desktop.

Select an option

Save note103/d1aaff264e551d6ea4eb22ee3621847b to your computer and use it in GitHub Desktop.
#!/usr/bin/env perl
use strict;
use warnings;
use feature 'say';
use utf8;
binmode STDOUT, ':utf8';
use Time::Piece;
use Time::Seconds;
my @data = <DATA>;
my $former = '00:00';
for (@data) {
if ($_ =~ /\A
(?<date>\d{4}\/\d\d?\/\d\d?)\t
(?<day>.*)\t
(?<time>\d\d?:\d\d)\t
(?<contents>.*)\n/msx
)
{
my $date = $+{date};
my $day = $+{day};
my $time = $+{time};
my $contents = $+{contents};
my $calc_time = localtime->strptime($time, '%T');
my $calc_former = localtime->strptime($former, '%T');
my $diff = ($calc_time - $calc_former) / ONE_HOUR;
my $diff_hour = sprintf("%d", $diff);
$diff = ($calc_time - $calc_former - ($diff_hour * ONE_HOUR)) / ONE_MINUTE;
my $diff_minute = sprintf("%d", $diff);
$diff_hour = '0' . $diff_hour if ($diff_hour =~ /\A\d\z/ms);
$diff_minute = '0' . $diff_minute if ($diff_minute =~ /\A\d\z/ms);
say "$date\t$day\t$former\t$time\t$diff_hour:$diff_minute\t$contents";
$former = $time;
}
}
__DATA__
2016/4/25 Mon 14:45 作業1
2016/4/25 Mon 15:04 作業2
2016/4/25 Mon 15:19 休憩1
2016/4/25 Mon 15:45 作業3
2016/4/25 Mon 16:08 作業4
2016/4/25 Mon 17:10 休憩2
2016/4/25 Mon 17:24 作業5
2016/4/25 Mon 17:24 作業6
2016/4/25 Mon 18:00 休憩3
2016/4/25 Mon 18:32 作業7
2016/4/25 Mon 18:57 作業8
@note103
Copy link
Author

note103 commented Apr 25, 2016

=> 日付 曜日 作業開始 作業終了 作業時間 内容

2016/4/25 Mon 00:00 14:45 14:45 作業1
2016/4/25 Mon 14:45 15:04 00:19 作業2
2016/4/25 Mon 15:04 15:19 00:15 休憩1
2016/4/25 Mon 15:19 15:45 00:26 作業3
2016/4/25 Mon 15:45 16:08 00:23 作業4
2016/4/25 Mon 16:08 17:10 01:02 休憩2
2016/4/25 Mon 17:10 17:24 00:14 作業5
2016/4/25 Mon 17:24 17:24 00:00 作業6
2016/4/25 Mon 17:24 18:00 00:36 休憩3
2016/4/25 Mon 18:00 18:32 00:32 作業7
2016/4/25 Mon 18:32 18:57 00:25 作業8

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment