2010-01-27 19 views
15

मैं इस टाइम स्टांप स्वरूपण प्राप्त करना चाहते हैं:मैं पर्ल में टाइमस्टैम्प कैसे प्रारूपित कर सकता हूं?

01/13/2010 20:42:03 - - 

कहाँ यह हमेशा साल है, जहां यह 4 अंक है के लिए छोड़कर नंबर के लिए 2 अंक है। और यह 24 घंटे की घड़ी पर आधारित है।

मैं पर्ल में यह कैसे कर सकता हूं? मैं देशी कार्यों को पसंद करता हूं।

+1

जबकि मैं देशी/मूल मॉड्यूल के लिए आपकी प्राथमिकता को समझता हूं, डेटटाइम और कुछ संबंधित स्वरूपक आपकी किट में आने के प्रयास के लायक हैं। http://search.cpan.org/dist/DateTime/ – daotoad

उत्तर

35

POSIXstrftime प्रदान करता है: POSIX से बचने का एक साधन के रूप

my ($sec, $min, $hr, $day, $mon, $year) = localtime; 
printf("%02d/%02d/%04d %02d:%02d:%02d\n", 
     $day, $mon + 1, 1900 + $year, $hr, $min, $sec); 

:

 
$ perl -MPOSIX -we 'print POSIX::strftime("%m/%d/%Y %H:%M:%S\n", localtime)' 
01/27/2010 14:02:34 

आप की तरह कुछ लिखने के लिए परीक्षा हो सकती है। नहीं करें! AFAIK, POSIX.pm 1996 या 1997

+1

प्रश्न में अस्पष्ट '01/13/2010' से निर्णय लेते हुए, ब्रायन'% m /% d/... 'या प्रारूप का प्रारूप चाहता है यहां तक ​​कि '"% D% T "' –

+0

@gbacon '% D% T' विंडोज पर 'perl' 5.10.1 पर काम नहीं करता है (यह लिनक्स पर किया गया है), मैंने सुरक्षित खेलने का फैसला किया। यह ध्यान देने के लिए धन्यवाद कि मैं गलती से '% m' और'% d' swapped। –

+0

Argh! अच्छी पकड़, और याद रखने के लिए अच्छा है। –

1

के बाद से कोर में किया गया है की कोशिश करो Date::Format

0

यह एक सबरूटीन है कि मैं का उपयोग करें। यह आपको इच्छित प्रारूप में डेट टाइम स्टैंप प्राप्त करने की अनुमति देता है।

#! /usr/bin/perl 
use strict; 
use warnings; 

use POSIX; 
use POSIX qw(strftime); 

sub getTime 
{ 
    my $format = $_[0] || '%Y%m%d %I:%M:%S %p'; #default format: 20160801 10:48:03 AM 
    my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); 
    return strftime($format, $sec, $min, $hour, $wday, $mon, $year, $mday); 
} 

# Usage examples 
print getTime()."\n";     #20160801 10:48:03 AM 
print getTime('%I:%M:%S %p')."\n";  #10:48:03 AM 
print getTime('%A, %B %d, %Y')."\n";  #Monday, August 01, 2016 
print getTime('%Y%m%d %H:%M:%S')."\n"; #20160801 10:48:03 
संबंधित मुद्दे