Created
April 25, 2016 11:00
-
-
Save note103/d1aaff264e551d6ea4eb22ee3621847b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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 |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
=> 日付 曜日 作業開始 作業終了 作業時間 内容
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