Автоматически поставить рабочую неделю

Сейчас я еженедельно собираю данные и вручную и неделю и месяц. Например: рабочая неделя на сегодня на этой неделе - с 23 июня по 29 июня, а месяц - июнь 2014 года.

Я хочу собрать данные с начала года и на основе даты, которая автоматически помещает неделю и месяц

Например:

Дата запроса реферала Неделя Месяц

1/3/2014 0:00 30 декабря по 05 января 2014 г. январь 2014 г.
1/3/2014 11:10 30 декабря по 05 января 2014 г. январь 2014 г.
31.12.2013 0:00 30 декабря - 05 января 2014 г. декабрь 2013 г.
18.06.2014 0:00 16 июня по 22 июня 2014 г. июнь 2014 г.
20.06.2014 9:51 16 июня по 22 июня 2014 года, июнь 2014 года
4/28/2014 16:34 28 апреля по 04 мая 2014 года, апрель 2014 года
5/1/2014 15:22 28 апреля по 04 мая 2014 г. май 2014 г.

Рабочая неделя начнется каждый понедельник и завершится в воскресенье.

Это можно сделать автоматически? Файл имеет тысячи строк...

-3
02 июля '14 в 19:12
источник поделиться
1 ответ

Вот ты где:

#!/usr/bin/perl

use strict;
use warnings;
use feature 'say';

use DateTime;
use DateTime::Format::Strptime;

my @datetimes = (
    '1/3/2014 0:00',
    '1/3/2014 11:10',
    '12/31/2013 0:00',
    '6/18/2014 0:00',
    '6/20/2014 9:51',
    '4/28/2014 16:34',
    '5/1/2014 15:22',
);


for my $datetime_str (@datetimes) {

    my $strp = 'DateTime::Format::Strptime'->new( pattern => '%m/%d/%Y %H:%M' );
    my $dt = $strp->parse_datetime($datetime_str);

    my $month_year_strp = 'DateTime::Format::Strptime'->new( pattern => '%B %Y' );
    my $month_year = $month_year_strp->format_datetime($dt);

    my $desired_dow = 1; # Monday
    $dt->subtract(days => ($dt->day_of_week - $desired_dow) % 7);
    my $month_day_strp = 'DateTime::Format::Strptime'->new( pattern => '%B %d' );
    my $monday = $month_day_strp->format_datetime($dt);

    $dt->add(days => 6);
    my $sunday = $month_day_strp->format_datetime($dt);

    say "$datetime_str, $monday thru $sunday, $month_year";
}

В следующий раз помогите кому-то другому (в случае, если это то, что вам нужно - я не уверен, получил ли я ваш вопрос). :-) Я использовал ссылку, размещенную @scragar в комментариях.

0
02 июля '14 в 19:45
источник

Посмотрите другие вопросы по метке или Задайте вопрос