0

日付文字列 (ほとんどの場合 ISO8601 形式) が渡され、それを ISO 週の日付に変換して、MySQL に DATETIME 列として保存する必要があります。保存したい DateTime オブジェクトを初期化するには、次のようにします。

$date = new DateTime("now");
$date = new DateTime( $date->format("o-\WW") );

echo $date->format(DateTime::ISO8601) . "\n";

私は Doctrine2 を使用しているので、エンティティに DateTime オブジェクトを渡す必要があります。同じ結果を得るために 2 つの DateTime オブジェクトを作成しないようにする方法はありますか? 日付関数に戻り、それを DateTime コンストラクターの引数として使用する必要がありますか?

$date = new DateTime( date("o-\WW", strtotime("now") );
4

3 に答える 3

2

次の方法で、オブジェクトの週と年を使用して最初のオブジェクトをsetISODate更新するために使用できます。DateTimeformat()

$date = new DateTime();
$date->setISODate($date->format('o') , $date->format('W'));
echo $date->format(DateTime::ISO8601);
于 2013-10-25T16:17:36.653 に答える
1

modify()オブジェクトのメソッドを使用できDateTimeます。

$date = new DateTime();
$date->modify('sunday this week');
echo $date->format(DateTime::ISO8601) . "\n";

週の最初の曜日を日曜日以外にしたい場合は、次のようにする必要があることに注意してください。この例では、月曜日を週の最初の日と見なしているため、日曜日の日付の場合、前の週から月曜日の日付を取得する必要があります。

$date = new DateTime();
if ($date->format('D') === 'Sun') {
    $date->modify('monday last week');
} else {
    $date->modify('monday this week');
}
echo $date->format(DateTime::ISO8601) . "\n";
于 2013-10-25T15:58:06.377 に答える
-1

おそらく次のように日付を使用できます。

$date = new DateTime( date('o-\WW') );

そのフォーマットは少し奇妙に見えますが。:pもちろん、日付を変更/修正するためにクラスが提供する他のメソッド/関数を使用することもできます。

于 2013-10-25T15:56:30.427 に答える