2012-04-21 17 views
-3

にweeknumberからの変換以下の情報を考慮:PHPの日付関数:バック月

  • 年:2012
  • Weeknumber:4
  • DAYNAME:火

どのように私はこれを変換することができますPHPの日付関数を使用して2012-01-12(YYYY-MM-DD)のような有効な日付に変更しますか?

DateTimeクラスはこれを行うことはできません

+0

を参照してください。[DateTimeオブジェクト](http://il.php.net/manual/en/book.datetime.php) –

+0

キーボードの平手打ちあなたはビットにPHPのドキュメントを検索するだろうか? – noli

+0

週番号は[ISO週](http://en.wikipedia.org/wiki/ISO_8601#Week_dates)ですか? – salathe

答えて

3

ありがとう、しかし機能strptimeすることができます。配列戻り

$d = strptime('TUE 4 2012', '%a %W %Y'); 
var_dump($d); 

tm_yearは1900年以降の年数を含み、tm_month

array 
    'tm_sec' => int 0 
    'tm_min' => int 0 
    'tm_hour' => int 0 
    'tm_mday' => int 24 
    'tm_mon' => int 0 
    'tm_year' => int 112 
    'tm_wday' => int 2 
    'tm_yday' => int 23 
    'unparsed' => string '' (length=0) 

。なお0系、1系ではありません。これは正しい2012-01-24を表しています。

+0

素敵な答え..私はこの機能について知りませんでした。だから私はスクリプトを書いた:Dチェックアウト... –

-4

この機能を使用:週はsunday

$yearから始まる場合$start_sundaytrueあるべき

function get_date($year,$week,$day,$start_sunday=false){ 
    $day_array = array('Mon'=>1,'Tue'=>2,'Wed'=>3,'Thu'=>4,'Fri'=>5,'Sat'=>6,'Sun'=>($start_sunday?0:7)); 
    $month_array = array(31,($year%4==0?29:28),31,30,31,30,31,31,30,31,30,31); 
    $week *= 7; 
    $month = 1; 
    for($i=0;$i<count($month_array);$i++){ 
     if($week-$month_array[$i]<=0){ 
      break; 
     } 
     $week -= $month_array[$i]; 
     $month++; 
    } 
    $format = "$year $month $week"; 
    $date = date_create_from_format("Y m j",$format); 
    $date_num = date_format($date,"D"); 
    $curr = $day_array[ucfirst(strtolower($day))]-$day_array[$date_num]; 
    $got_date = strtotime("$curr ".($curr==1||$curr==-1?"day":"days"),strtotime(date_format($date,"Y-m-j"))); 

    return $got_date; 
} 

$weekある週番号 $dayは結婚短い曜日名の伊右衛門、火曜、です、....

この関数は、日付の形式を取得します与えられたフォーマット。

Enjoy............ 
+1

-1私の目を傷つけるので。また、うるう年かどうかを計算するためのルールがあります。そして、仕事をするために組み込み関数を使用しないため。 – PeeHaa

+0

ええ、私は100年目にもっと多くのルールを知っています:P –