2012-08-15 5 views
5

私は、ある年に日付が入る週を探しています。私は "week1-2012"と "week34-2011"のようなフォルダにソートする必要があるファイルの束があります。私は検索してみましたが、多くの結果は本当に助けにはならないのですが、私は現在perl v5.6.1を使用しています。私はまた、このリンク(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; 

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

そして、あなたは下手なツールを使ってうれしく思いますか? OK。それはあなたの人生を浪費しています:-) –

関連する問題