2012-08-15 2 views
5

날짜가 속하는 한 주를 찾으려고 노력하고 있습니다. "week1-2012"및 "week34-2011"과 같은 폴더로 정렬해야하는 파일이 있습니다. 검색을 시도했으나 현재 많은 수의 결과가 도움이되지 않습니다. 왜냐하면 현재 perl v5.6.1, super old를 사용하고 있으며 모듈을 다운로드 할 수 없기 때문입니다. 나는 또한이 링크 (How do I calculate the week number given a date?)의 관심을 찾았지만 쉽게 일 년과 주를 얻는 방법에 대해 궁금해하고 있었다. 그 달을 받고, 그 날을 알기 위해 적절한 일수를 더하는 것을 생각하고있었습니다. 어떤 도움을 주시면 감사하겠습니다. 내가 찾고 있어요 올해 형식의 예는 당신은 핵심 모듈을 사용할 수 있습니다날짜가 mm/dd/yyyy 인 주를 찾으십시오.

//year 2012 
S M T W R F S 
      1 2 3 <-- week #1 
4 5 6 7 8 9 10 <-- week #2 //came from the link 

//dec year 2011 
S M T W T F S 
27 28 29 31   <-- week #52 or 53, not to sure the actual week 

답변

7

입니다 : POSIX과에 날짜 1.parse

Time::Local (초, 분, 시간, MDAY, 월, 년) 초 날짜 2.convert

(시대)

3.use 기능의 strftime는 현재 날짜로부터 일주일 얻을 수

use strict; 
use Time::Local; 
use POSIX qw(strftime); 

my $date = '08/15/2012'; 
my ($month, $day, $year) = split '/', $date; 

my $epoch = timelocal(0, 0, 0, $day, $month - 1, $year - 1900); 
my $week = strftime("%U", localtime($epoch)); 

printf "Date: %s № Week: %s\n", $date, $week; 
,451,515,

OUTPUT

Date: 08/15/2012 № Week: 33 
+0

예 !!! 너는 방금 내 문제를 해결했다. 나는이 작업 컴퓨터가 나에게 그것을주지 않을 것이기 때문에 나는 모듈을 설치할 수 없었던 이유를 언급하는 것을 잊었다. 그리고 나는이 프로그램을 필요한 모듈이 없을 수도있는 다른 PC로 옮길 필요가있다. 엄청 고마워! – imakeitrayne

+0

당신은 환영합니다 :) –

3

여기에 대체 솔루션 DateTime를 사용하여,이다 :

use strict; 
use warnings; 
use DateTime; 

my $dt=DateTime->now(time_zone=>"local"); 
print $dt->week_number . "\n"; 

출력은 물론 :

33 

편집 : 아무것도 만약Of courseyou can download modules!그렇지 않은 경우 DateTime에서 관련 코드를 복사하여 사용할 수 있습니다.

+0

그것은 perl의이 버전에 datetime이 없지만 ... 도움을 주셔서 감사합니다 ... – imakeitrayne

+0

다시 : 다른 것이 없다면, 당신은 복사해서'DateTime'의 관련 코드를 사용할 수 있습니다. 그것은 오픈 소스입니다. 즉, 실제로 ** 소스를 볼 수 있습니다 **. –

3

Perl 5.6.1 날짜는 2001 년 4 월부터입니다. 누군가는 현대적인 도구를 사용하지 않아도되기보다 훨씬 더 힘든 생활을하고 있습니다. 나는 그 문제를 고치는 데 시간을 할애 할 가치가 있다고 제안한다.

Perl 5.10 이상인 경우 Time::Piece 모듈이 포함됩니다. 그리고 당신의 문제는 사소한 것이 될 것입니다.

#!/usr/bin/perl 

use strict; 
use warnings; 
use 5.010; 

use Time::Piece; 

my $date = '08/15/2012'; 

my $dt = Time::Piece->strptime($date, '%m/%d/%Y'); 

say $dt->strftime('week%W-%Y'); 

실행이 제공 :

$ ./week 
week33-2012 

이는 월 - 일,하지 일 - 토으로 주 계산합니다.

+0

예.하지만 현재 일반 컴퓨터가 기술 지원에 의해 수정 될 때까지 임시 컴퓨터 만 사용하고 있습니다. – imakeitrayne

+1

그리고 그 동안 열등한 도구로 작업하게되어 행복합니까? 승인. 당신의 인생을 낭비하고 있습니다 :-) –

관련 문제