使用php向datetime添加一年
我们怎样才能在这个日期加上1年使用php向datetime添加一年,php,Php,我们怎样才能在这个日期加上1年 类似于$newdata=$data['user']['time']+1年 或 谢谢 亚当·拉马丹(Adam Ramadhan)我想你可以很容易地做到这一点。比如: $newdata = 2012-03-07 00:33:45 尽管“c”格式字符串与输入格式不同。您可以查阅公司的文档,了解如何构造正确的文档 “Y-m-d H:i:s”——正如蒂姆·库珀所建议的那样——看起来是正确的。是您正在寻找的函数: $newdata = date('c', strtotime
类似于
$newdata=$data['user']['time']+1年
或
谢谢
亚当·拉马丹(Adam Ramadhan)我想你可以很容易地做到这一点。比如:
$newdata = 2012-03-07 00:33:45
尽管“c”格式字符串与输入格式不同。您可以查阅公司的文档,了解如何构造正确的文档
“Y-m-d H:i:s”——正如蒂姆·库珀所建议的那样——看起来是正确的。是您正在寻找的函数:
$newdata = date('c', strtotime($data['user']['time'] . ' +1 year'));
首先,必须将MySQL
datetime
转换为PHP能够理解的内容。有两种方法可以做到这一点
UNIX\u TIMESTAMP()
告诉MySQL返回datetime
列的UNIX时间戳
$data['user']['seal_data'] = date('Y-m-d H:i:s', strtotime('+1 year', strtotime($data['user']['time'])));
DateTime::createFromFormat
将字符串时间转换为PHP可以理解的内容
SELECT whatever, UNIX_TIMESTAMP(myTime) AS 'myUnixTime' FROM myTable;
一旦完成了,你就可以利用时间。。。根据上面使用的方法,您可以使用以下方法之一
$date = DateTime::createFromFormat('Y-m-d H:i:s', $data['user']['time']);
DateTime
对象,则可以使用以下选项:
$inAYear = strtotime('+1 year', $data['user']['unixTime']);
$inAYear = $date->add(new DateInterval('P1Y'));
$strTime = date('Y-m-d H:i:s', $inAYear);
现在,要以令人尊敬的格式显示日期,必须告诉PHP以正确的格式返回字符串
$inAYear = strtotime('+1 year', $data['user']['unixTime']);
$inAYear = $date->add(new DateInterval('P1Y'));
$strTime = date('Y-m-d H:i:s', $inAYear);
DateTime
对象,则可以使用以下选项:
$inAYear = strtotime('+1 year', $data['user']['unixTime']);
$inAYear = $date->add(new DateInterval('P1Y'));
$strTime = date('Y-m-d H:i:s', $inAYear);
或者,如果您不想处理所有这些问题,您可以在查询时简单地添加一年
$strTime = $inAYear->format('Y-m-d H:i:s');
这应该可以做到(未经测试)
目前(2017年)的做法是使用
这个问题是谷歌搜索“php datetime添加一年”的首要问题,但严重过时。虽然前面的大多数答案在大多数情况下都适用,但既定的标准是使用DateTime对象来代替,这主要是因为strottime
需要仔细操作时区和DST
TL;博士
$date=newdatetime('2011-03-07 00:33:45',[user TZ])代码>
$date->modify(“+1年”)代码>
- 从以下位置更改时区:
$date->setTimezone(新的DateTimeZone('Pacific/Chatham'))代码>
- 转换为字符串,格式为:
echo$date->format('Y-m-dh:i:s')代码>
- 将系统时区设置为UTC时,生活会更轻松
- 切勿在配置文件之外修改系统时区。
- 我见过太多依赖于的代码。如果你这样做,停下来。请将时区保存在变量中,并在应用程序中传递李>
首先,如果日期格式用斜线(/)分隔,如“2019/12/31”,则应将其转换为短划线(-)格式,如“2019-12-31”,使用
str_replace()
函数进行转换
$data = "2011-03-07 00:33:45";
echo 'Original date +1 year: ' . date('Y-m-d H:i:s', strtotime(date("Y-m-d H:i:s", strtotime($data)) . " +1 year"));
$string = str_replace('/', '-', '2019/12/31'); //output: 2019-12-31
要添加时间/日/月/年,请不要使用strotime()
函数,因为它无法添加超过2038年的时间。
所以在这里我更喜欢使用DateTime()
函数
$data = "2011-03-07 00:33:45";
echo 'Original date +1 year: ' . date('Y-m-d H:i:s', strtotime(date("Y-m-d H:i:s", strtotime($data)) . " +1 year"));
$string = str_replace('/', '-', '2019/12/31'); //output: 2019-12-31
什么是
$data['user']['time']
?字符串?应该是日期时间mysql格式。sori编辑了数百个现有问题的可能副本和每一个问题,这些问题询问“如何[添加/删除]x[s/m/h/d/m/y]到一个日期”。$newdata=$data['user']['time']+strottime(+1年”)代码>?是的,我试过了,在这里发布之前,它给了我们类似1331055225的信息。也许是unixtime或者别的什么。是的,它返回UNIX时间戳。您需要使用类似date()的东西来重新格式化它。@Adam:现在应该是您需要的了。您似乎对您的引用有点困惑,但这很有效,很简单,所以请投票;-)