-3

以下の情報を前提としています。

  • 年:2012
  • 週番号:4
  • 曜日名:TUE

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

ありがとう

4

2 に答える 2

4

クラスではDateTimeできませんが、関数でstrptimeはできます。

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

それは配列を返します:

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)

tm_yearには 1900 年からの年数が含まれており、tm_month1 ベースではなく 0 ベースであることに注意してください。したがって、これは正しい 2012 年 1 月 24 日を表しています。

于 2012-04-21T16:28:03.160 に答える
-4

この関数を使用します。

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;
}

週が次から始まる場合はどこにある$start_sundayべきかtruesunday

$yearは年 $weekです 週番号 $dayは短い曜日名です iemon,tue,wed,....

この関数は、指定された形式の日付を取得します。

Enjoy............
于 2012-04-21T16:37:55.593 に答える