$data['user']['time'] = '2011-03-07 00:33:45';
Run Code Online (Sandbox Code Playgroud)
我们怎么能在这个日期加1年?
类似的东西$newdata = $data['user']['time'] + 1 year?
要么
$newdata = 2012-03-07 00:33:45
Run Code Online (Sandbox Code Playgroud)
谢谢
亚当拉马丹
Tim*_*per 26
strtotime() 是你正在寻找的功能:
$data['user']['seal_data'] = date('Y-m-d H:i:s', strtotime('+1 year', strtotime($data['user']['time'])));
Run Code Online (Sandbox Code Playgroud)
And*_*ore 12
首先,您必须将MySQL转换为datetimePHP可以理解的内容.有两种方法可以做到这一点......
UNIX_TIMESTAMP()在查询中使用,告诉MySQL返回datetime列的UNIX时间戳.
SELECT whatever, UNIX_TIMESTAMP(myTime) AS 'myUnixTime' FROM myTable;
Run Code Online (Sandbox Code Playgroud)使用DateTime::createFromFormat你的字符串时间转换为PHP的东西可以理解.
$date = DateTime::createFromFormat('Y-m-d H:i:s', $data['user']['time']);
Run Code Online (Sandbox Code Playgroud)完成后,您可以使用时间...根据您上面使用的方法,您可以使用以下方法之一.
如果您有unix时间戳,则可以使用以下内容添加一年:
$inAYear = strtotime('+1 year', $data['user']['unixTime']);
Run Code Online (Sandbox Code Playgroud)如果您有DateTime对象,则可以使用以下内容:
$inAYear = $date->add(new DateInterval('P1Y'));
Run Code Online (Sandbox Code Playgroud)现在,要以可敬的格式显示日期,您必须告诉PHP以正确的格式返回字符串.
如果您有unix时间戳,则可以使用以下内容:
$strTime = date('Y-m-d H:i:s', $inAYear);
Run Code Online (Sandbox Code Playgroud)如果您有DateTime对象,则可以使用以下内容:
$strTime = $inAYear->format('Y-m-d H:i:s');
Run Code Online (Sandbox Code Playgroud)或者,如果您不想处理所有这些问题,则可以在查询时添加一年.
SELECT whatever, DATE_ADD(myTime, INTERVAL 1 YEAR) AS 'inAYear' FROM myTable;
Run Code Online (Sandbox Code Playgroud)
这个问题是谷歌搜索“php datetime add one year”的首要问题,但已经严重过时了。虽然以前的大多数答案在大多数情况下都可以正常工作,但已建立的标准是为此使用DateTime对象,主要是因为strtotime需要仔细操作时区和 DST。
$date = new DateTime('2011-03-07 00:33:45', [user TZ]);$date->modify('+1 year');$date->setTimezone(new DateTimeZone('Pacific/Chatham'));echo $date->format('Y-m-d H:i:s');遵循这种操作日期和时间的模式将为您处理最糟糕的时区/夏令时/闰时。
请记住最后两个注意事项:
转换日期格式 yyyy-mm-dd => dd-mm-yyyy
| 归档时间: |
|
| 查看次数: |
25934 次 |
| 最近记录: |