我的数据库中有两列:start_date和end_date两种DATE类型.我的代码更新日期如下:
$today_date = date("Y-m-d");
$end_date = date("Y-m-d"); // date +1 month ??
$sql1 = "UPDATE `users` SET `start_date` = '".$today_date."', `end_date` = '".$end_date."' WHERE `users`.`id` ='".$id."' LIMIT 1 ;";
Run Code Online (Sandbox Code Playgroud)
$end_date等于$start_date+一个月的最佳方法是什么?例如,2000- 10 -01将成为2000 - 11 -01.
Gaz*_*ler 83
你可以使用PHP的strtotime()函数:
// One month from today
$date = date('Y-m-d', strtotime('+1 month'));
// One month from a specific date
$date = date('Y-m-d', strtotime('+1 month', strtotime('2015-01-01')));
Run Code Online (Sandbox Code Playgroud)
请注意,+1 month并不总是直观地计算.它似乎总是添加当月存在的天数.
Current Date | +1 month
-----------------------------------------------------
2015-01-01 | 2015-02-01 (+31 days)
2015-01-15 | 2015-02-15 (+31 days)
2015-01-30 | 2015-03-02 (+31 days, skips Feb)
2015-01-31 | 2015-03-03 (+31 days, skips Feb)
2015-02-15 | 2015-03-15 (+28 days)
2015-03-31 | 2015-05-01 (+31 days, skips April)
2015-12-31 | 2016-01-31 (+31 days)
Run Code Online (Sandbox Code Playgroud)
您可以使用的其他一些日期/时间间隔:
$date = date('Y-m-d'); // Initial date string to use in calculation
$date = date('Y-m-d', strtotime('+1 day', strtotime($date)));
$date = date('Y-m-d', strtotime('+1 week', strtotime($date)));
$date = date('Y-m-d', strtotime('+2 week', strtotime($date)));
$date = date('Y-m-d', strtotime('+1 month', strtotime($date)));
$date = date('Y-m-d', strtotime('+30 days', strtotime($date)));
Run Code Online (Sandbox Code Playgroud)
Pat*_*ins 20
接受的答案只有在您需要31天之后才有效.这意味着如果您使用的日期为"2013-05-31",那么您希望不会在6月份,这不是我想要的.
如果你想下个月,我建议你使用当前的年份和月份,但继续使用第一个月.
$date = date("Y-m-01");
$newdate = strtotime ( '+1 month' , strtotime ( $date ) ) ;
Run Code Online (Sandbox Code Playgroud)
这样,您就可以获得下个月的月份和年份,而不会跳过一个月.
Ant*_*n S 18
您实际上并不需要PHP函数来实现此目的.您已经可以直接在SQL中进行简单的日期操作,例如:
$sql1 = "
UPDATE `users` SET
`start_date` = CURDATE(),
`end_date` = DATE_ADD(CURDATE(), INTERVAL 1 MONTH)
WHERE `users`.`id` = '" . $id . "';
";
Run Code Online (Sandbox Code Playgroud)
请参阅http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_addtime
小智 15
如果您希望下个月有特定日期,可以执行以下操作:
// Calculate the timestamp
$expire = strtotime('first day of +1 month');
// Format the timestamp as a string
echo date('m/d/Y', $expire);
Run Code Online (Sandbox Code Playgroud)
请注意,这实际上可以更加可靠地工作,+1 month令人困惑.例如...
Current Day | first day of +1 month | +1 month
---------------------------------------------------------------------------
2015-01-01 | 2015-02-01 | 2015-02-01
2015-01-30 | 2015-02-01 | 2015-03-02 (skips Feb)
2015-01-31 | 2015-02-01 | 2015-03-03 (skips Feb)
2015-03-31 | 2015-04-01 | 2015-05-01 (skips April)
2015-12-31 | 2016-01-01 | 2016-01-31
Run Code Online (Sandbox Code Playgroud)
Lau*_*ovs 13
要小心,因为有时strtotime("+1 months")可以跳过月份数字.
例:
$today = date("Y-m-d"); // 2012-01-30
$next_month = date("Y-m-d", strtotime("$today +1 month"));
Run Code Online (Sandbox Code Playgroud)
如果今天是1月,下个月应该是2月28或29天,但PHP将在3月返回,而不是2月.
| 归档时间: |
|
| 查看次数: |
89960 次 |
| 最近记录: |