Beefy Boxes and Bandwidth Generously Provided by pair Networks Frank
"be consistent"
 
PerlMonks  

DateTime formatting problem

by PerlSufi (Pilgrim)
on Apr 30, 2013 at 17:45 UTC ( #1031439=perlquestion: print w/ replies, xml ) Need Help??
PerlSufi has asked for the wisdom of the Perl Monks concerning the following question:

Hello Monks, I have a problem formatting my dates with DateTime module. This code:
use DateTime; use Date::Format; my $one_month_ago = DateTime->today->subtract(months => 1); print $one_month_ago = DateTime->last_day_of_month( month => $one_month_ago->month, year => $one_month_ago->year, )->strftime("%m%d%y"); my $start_date = DateTime->today->subtract( months => 1); print $start_date->strftime("%m%d%y");
returns the date in the formats that I want. (MMDDYY)
This code that I have with mechanize entering the information in fields on a website, however, gives me the start date as MMDDYYT00:00:00.
my $start_date = DateTime->today->subtract( months => 1); $start_date->strftime("%m%d%y"); print $start_date; my $end_date = DateTime->today->subtract(months => 1); $end_date = DateTime->last_day_of_month( month => $end_date->month, year => $end_date->year, )->strftime("%m%d%y"); print $end_date; #This block of code is intended to fill in the required forms $mech->get("https://caps.usps.gov/ssl_caps/caps_ai.asp"); my $usr = "asdf"; my $pw = "asdf"; $mech->form_number(1); $mech->field( "capsn", $usr); $mech->form_number(2); $mech->field("capsp", $pw); $mech->form_number(3); $mech->field( "startdate", $start_date); $mech->form_number(4); $mech->field( "enddate", $end_date); $mech->form_number(5); $mech->select("format", "2"); $mech->click();
Why is this happening? Thanks in advance for your input..

Comment on DateTime formatting problem
Select or Download Code
Re: DateTime formatting problem
by PerlSufi (Pilgrim) on Apr 30, 2013 at 17:54 UTC
    I found that changing
    my $start_date = DateTime->today->subtract( months => 1); $start_date->strftime("%m%d%y");

    to
    my $start_date = DateTime->today->subtract( months => 1)->strftime("%m +%d%y");

    worked..
Re: DateTime formatting problem
by moritz (Cardinal) on Apr 30, 2013 at 17:59 UTC
    $start_date->strftime("%m%d%y"); print $start_date;

    strftime does not modify the invocant ($start_date) in any way. Rather it returns a string that is the result of formatting the invocant.

    Since you throw away the result of calling ->strftime, and then print $start_date again in the next line, I guess you haven't fully understood this principle.

    So the answer is to work with the return value of the ->strftime call, not with the original object.

      Thanks. So on the first (tomorrow) it should return my start date as 040113 and my end date as 043013, right?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1031439]
Approved by moritz
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (8)
As of 2014-04-16 23:08 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (436 votes), past polls