in reply to date and time using localtime

I generally recommend using a module for all date/time operations, as it will take over a lot of the details and work for you. There is Time::Piece, a core module since Perl v5.10:

use Time::Piece; my $t = localtime; print "Date1 is : ",$t->strftime("%d-%b-%Y"),"\n"; print "Date2 is : ",$t->strftime("%d-%m-%Y"),"\n"; print "Time1 is : ",$t->strftime("%H:%M:%S"),"\n"; print "Time2 is : ",$t->strftime("%I:%M:%S %p"),"\n"; __END__ Date1 is : 07-Okt-2017 Date2 is : 07-10-2017 Time1 is : 10:19:42 Time2 is : 10:19:42 # - OR - under the en_US locale: Date1 is : 07-Oct-2017 Date2 is : 07-10-2017 Time1 is : 10:19:42 Time2 is : 10:19:42 AM

And my personal favorite is DateTime, since it gives you a lot of powerful tools, including proper time zone handling. In the following I'm letting the module determine the current local time zone, although I recommend specifying one explicitly if possible. Note that it defaults to the en_US locale unless you specify a different one to the object.

use DateTime; my $dt = DateTime->now(time_zone=>'local'); print "Date1 is : ",$dt->strftime("%d-%b-%Y"),"\n"; print "Date2 is : ",$dt->strftime("%d-%m-%Y"),"\n"; print "Time1 is : ",$dt->strftime("%H:%M:%S %Z"),"\n"; print "Time2 is : ",$dt->strftime("%I:%M:%S %p %Z"),"\n"; __END__ Date1 is : 07-Oct-2017 Date2 is : 07-10-2017 Time1 is : 10:19:42 CEST Time2 is : 10:19:42 AM CEST

In general, I strongly recommend you Use strict and warnings.

Replies are listed 'Best First'.
Re^2: date and time using localtime
by BillKSmith (Monsignor) on Oct 07, 2017 at 20:17 UTC
    Using one of the time related modules to load strftime offers no advantage over the OP's choice of POSIX for the code shown. Perhaps he needs other features of POSIX. I was unaware that the function could be called as a method. Many readers would consider that an advantage.
    Bill
      Using one of the time related modules to load strftime offers no advantage over the OP's choice of POSIX for the code shown.

      If we're only talking about the strftime "...", localtime bits of code, then yes, there isn't a big difference. But otherwise I disagree. In the OP's code, note how they add 1900 to the year, but don't change $mon, which is zero-based - an easy thing to overlook; both Time::Piece and DateTime return the month as the more natural 1-based. Also, in my experience, one date/time task seldom comes alone - if the OP decides they want to display the date in different locales, or different time zones, or do any kind of math, DateTime handles that easily and correctly.

      I was unaware that the function could be called as a method.

      Time::Piece overrides localtime and gmtime to return an object.

      Using one of the time related modules to load strftime offers no advantage over the OP's choice of POSIX for the code shown. Perhaps he needs other features of POSIX. I was unaware that the function could be called as a method. Many readers would consider that an advantage.

      What?