2

日付のoW形式があります。これは、ISO 8601 形式の 4 桁の年とそれに続く週番号です。例として、201301 は 2012 年 12 月 31 日月曜日から始まる週を表します。

これをタイムスタンプに戻すにはどうすればよいですか。タイムスタンプから文字列への移行は で機能しdate('oW',$ts)ます。どうすれば後戻りできますか? 月曜日を oW 形式で表すことに興味があります。PHP が一方向に進む方法を提供し、その逆方向を気にしなかったとしたら、それは非常にばかげたことです。

4

1 に答える 1

3

ISO 8601 では、次の形式の週の日付が想定されています。

YYYY\WWW

例えば:

2012W52

は 2012 年の 52 週目の始まりで、実際には 2012/12/24 です。

週の日付をタイムスタンプに戻すには、php 関数を使用できますstrtotime()。コードは次のようになります。

$oW = '2012W53';
$time = strtotime($oW);
// will output: 2012-12-31T00:00:00+01:00 (I'm in CEST)
echo date('c', $time);

ただし、上記の形式 - 201300 - は では理解できませんstrtotime()。2 つの問題があります。

  • 週に 00 は使用できません。週に使用できる値は 01 から 53 です
  • 真ん中の「W」が抜けています。ただし、ISO 8601 規格に属しています。

私のテストでは、2012W53 が 2013W00 (または、ご想像のとおり W01) ではなく 2012/12/31 を指していることがわかりました。

さらに、php マニュアルのこのコメントと、これに関するウィキペディアの記事を読むことができます。

于 2012-12-28T17:05:03.180 に答える