1

私は mktime でいくつかの作業を行っています。次の日付を 30 日追加する必要がありますが、1970-01-30 の日付が返されます。何が間違っていますか?

$strtime=strtotime("2013-10-04");
$fecha=date("Y-m-d",$strtime);
echo $fecha."<br />";
$nueva_fecha=mktime(0,0,0,date("n",$fecha),date("j",$fecha)+30,date("Y",$fecha));
echo date("Y-m-d",$nueva_fecha)."<br />";

結果:

2013-10-04

1970-01-30

4

5 に答える 5

2

日付は、これを表す文字列値ではなく、2 番目のパラメーターとしてタイムスタンプを探しています。代わりに $strtime を渡すように更新されました。

$strtime=strtotime("2013-10-04");
$fecha=date("Y-m-d",$strtime); // <-- Unnecessary unless you want to echo the value.
echo $fecha."<br />";
$nueva_fecha=mktime(0,0,0,date("n",$strtime),date("j",$strtime)+30,date("Y",$strtime));
echo date("Y-m-d",$nueva_fecha)."<br />";

出力:

2013-10-04

2013-11-03

于 2013-10-04T20:49:48.557 に答える
2

次の関数を使用して、入力した日付に 30 日を追加できます。

$date = strtotime("2013-10-04");
$new_date = strtotime("+30 days", $date);

または単に現在の日付まで:

$new_date = strototime("+30 days", time());
于 2013-10-04T20:51:00.163 に答える
1

すでに strtotime があるのに、なぜさらにdate? 代わりに、 + (秒単位で 30 日) または単に提供されている機能を使用して、+ 1 day回答を確認することもできます:日付に 1 日を追加する

strtotime('2013-10-04 + 30 days');

これは印刷されます2013-11-03date('Y-m-d', strtotime('2013-10-04 + 30 days'))

于 2013-10-04T20:49:14.867 に答える
1

あなたはこれを試すことができます:

echo strtotime("+1 日"), "\n";

echo strtotime("+30 日",strtotime(date('D, d M Y'))), "\n";

これにより、現在の日付に 30 日が追加されます。

また、strtotime は非常に便利で、週単位、月単位、年単位で使用できます。

于 2013-10-04T20:49:23.857 に答える
0

これも使えます

<?php

$date      = date("Y/m/d"); // example date in yyyy/mm/dd format
$unix_time = strtotime( $date ); // covert date to unix time

$sec_in_30_days  = 60 * 60 * 24 * 30; // 60 seconds * 60 minutes * 24 hours * 30 days

$new_unix_time   = $unix_time + $sec_in_30_days; // add 30 days to unix time
$date_in_30_days = date( 'Y/m/d', $new_unix_time ); // convert new unix time to date

// Output results:
echo 'original current date: ' . $date . '<br />';
echo '<br />';
echo 'new date: ' . $date_in_30_days . '<br />';

?>

出力は

元の現在の日付: 2013/10/04

新しい日付: 2013/11/03

于 2013-10-04T21:13:19.000 に答える