我正在编写关于家谱的网站,我使用日期输入来获取日期,
$datamm= strftime('%Y-%m-%d', strtotime($_POST['datamm']));
转换数据库的日期,但我可以得到的最小值是1970-01-01
。我需要获得1500到当天之间的日期。
我该怎么做才能解决问题?如果可能的话,我更喜欢程序解决方案。
答案 0 :(得分:1)
这是一个例子,
<?php
$date = new DateTime( '01-01-1950' );
echo $date->format( 'Y-m-d' );
?>
DateTime很棒,一旦你理解了它就可以做各种各样的事情。
例如,这将添加一年并回显开始和结束日期,
<?php
$date = new DateTime( '01-01-1950' );
echo $date->format( 'Y-m-d' )."\n";
$date->modify( '+1 years' );
echo $date->format( 'Y-m-d' );
?>
答案 1 :(得分:0)
如果您知道日期来自输入的格式,那么您可以尝试:
$datamm = DateTime::createFromFormat('j-M-Y', $_POST['datamm']);//You know that date is coming in j-M-Y format
echo $date->format('Y-m-d'); // You can save in Y-m-d format in database
如果你把时间戳作为输入,那么:
$date = date('Y-m-d',$_POST['datamm']);//you are taking timestamp like : 30000000000 as an input
echo $date;//make in database in Y-m-d format
我希望它有所帮助
答案 2 :(得分:0)
试试这个,使用createFromFormat
// pass your date format
$date = DateTime::createFromFormat('d M Y','17 Jan 1500');
echo $date->format('Y-m-d');
<强> DEMO 强>
答案 3 :(得分:0)
您应该专注于使用某些第三方库而不是官方PHP的日期时间函数。
例如,对于高级日期时操作要求,PHP标准日期时间的一个很好的替代方案是moment.php
它的灵感来自moment.js库,其目标是修复常见的日期 - 时间编程问题,并将标准化带到更高的层次。
您可以通过以下作曲家获取:
{
"require": {
"fightbulc/moment": "*"
}
}
或通过github手动安装。
要解析各种输入日期,请参阅手册,下面是示例:
$m = new \Moment\Moment('1503-04-25T03:00:00', 'CET');
还有其他可供选择的方法,例如: https://github.com/swt83/php-date