2011-12-30 11 views

उत्तर

4

एक तरह से Date::Simple उपयोग करने के लिए है:

use warnings; 
use strict; 
use Date::Simple qw(d8); 

my $d = d8('20111230'); 
print $d->format('%d-%b-%Y'), "\n"; 

__END__ 

30-Dec-2011 
2

यहाँ एक और उपाय है। यह DateTimeX::Easy उपयोग करता है:

#!/usr/bin/env perl 

use strict; 
use warnings; 

use DateTimeX::Easy; 

my $dt = DateTimeX::Easy->parse('20111230'); 
print lc $dt->strftime('%d-%b-%G'); 
5

मैं तारीख मॉड्यूल से एक का उपयोग नहीं कर सकते, POSIX इतना बुरा नहीं है और यह perl साथ आता है:

use v5.10; 
use POSIX qw(strftime); 

my $date = '19700101'; 

my @times; 
@times[5,4,3] = $date =~ m/\A(\d{4})(\d{2})(\d{2})\z/; 
$times[5] -= 1900; 
$times[4] -= 1; 

# strftime(fmt, sec, min, hour, mday, mon, year, wday = -1, yday = -1, isdst = -1) 
say strftime('%d-%b-%Y', @times); 

बनाना @times थोड़ा बदसूरत है। आप जो भी चाहते हैं उसे हमेशा प्राप्त नहीं कर सकते हैं, लेकिन यदि आप कभी-कभी कोशिश करते हैं, तो आपको लगता है कि आपको वह चाहिए जो आपको चाहिए।

+0

पॉज़िक्स के लिए +1, और पत्थरों को उद्धृत करना। – TLP

7

TMTOWTDI ध्यान में रखते हुए आप Time::Piece

#!/usr/bin/env perl 
use strict; 
use warnings; 
use Time::Piece; 
my $t = Time::Piece->strptime("20111230", "%Y%m%d"); 
print $t->strftime("%d-%b-%Y\n"); 
+5

समय :: टुकड़ा पर्ल के साथ आता है, v5.10 से शुरू होता है। –

3

एक त्वरित समाधान का उपयोग कर सकते हैं।

my $date = '20111230'; 
my @months = (
    'Jan','Feb','Mar','Apr', 
    'May','Jun','Jul','Aug','Sep', 
    'Oct','Nov','Dec' 
); 

if($date =~ m/^(\d{4})(\d{2})(\d{2})$/){ 
     print $3 . '-' . $months[$2-1] . '-' . $1; 
} 
+0

यह किसी ऐसे पैकेज की आवश्यकता नहीं है जो आधार PERL इंस्टॉल में नहीं है, और यह काम करता है। – boatcoder

संबंधित मुद्दे

 संबंधित मुद्दे