DateTime現在の年の最初の日の文字列を変更する

今年の最初の日(2011年1月1日)のDateTime修正文字列を探しています。私は以下を試みた:

<?php

$time = new DateTime();

// works as expected, the first day of the current month
$time->modify('first day of this month');
echo $time->format('c')."\n";


// this doesn't work. I also tried several other ways
$time->modify('first day of january');
echo $time->format('c')."\n";

>

I know there are other ways to retrieve the date, but I search an string for DateTime->modify() no other solution.

8
私はあなたがバグを見つけたと思う。私はPHP 5.3.3を使用して、 "最初の日"または "最後の日"と1ヶ月+ 1年は使用できません。現在の(または前に変更された変更の)月の最初/最後の日を与えるだけです。
追加された 著者 Aurelio De Rosa,
まあ、この場合、私の答えはまだ正しいですが、phpバージョン> = 5.3.6;)
追加された 著者 Aurelio De Rosa,
うん、あなたは正しいバグです。私はこれが問題ではないと思います: "5.3.6絶対日付/時刻文が有効になりました。" - 以前は、相対的なパーツのみが使用されていました。投稿者: php.net/manual/ja/datetime.modify.php
追加された 著者 Marko,

5 答え

次の例のように、年も指定する必要があります。

"first day of January 2008"

公式ドキュメントから入手できます。

Update: It works on PHP version >= 5.3.6

12
追加された
@マルコあなたが正しいです。私はこの奇妙な問題を掘り下げています。
追加された 著者 Aurelio De Rosa,
試してみましたが、うまくいきません:$ time-> modify( '2011年1月1日'); echo $ time-> format( 'c')。 "\ n"; $ time-> modify( '今年の1月1日'); echo $ time-> format( 'c')。 "\ n";
追加された 著者 Marko,

v5.5.6で

エコー日付( 'Y-m-d'、strtotime( '今年1月の初日'));

Result: 2013-01-01

8
追加された
魅力のように働いていたPHP 5.3.10でテストされました! tks!
追加された 著者 holygrinder,

1年目の曜日を取得する または月の最初の日

<?php
//This is for a given month 
$m="May";
  //this id for this month
  //$m=date('F');
  //if you want the day of Sunday instead D use lower case l
  echo date('D', strtotime('first day of January this year'));
 echo "
". date("D", strtotime('first day of'. $m )); ?>

水曜日5月の結果水
結果水曜日

2
追加された

私のためのこの仕事(PHP 5.6 - 古いバージョンではテストされていません)... DateTime オブジェクト

//Get current datetime
$now = new DateTime();
$now->modify('first day of January this year');

echo $now->format('Y-m-d');
// Print (current year)-01-01
1
追加された
echo (new DateTime())->modify('first day of January this year')->format('Y-m-d');
0
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com