1970年PHP日期限制

1970年PHP日期限制,php,date,Php,Date,我正在编写一个关于家谱的网站,我使用日期输入来获取日期 $datamm= strftime('%Y-%m-%d', strtotime($_POST['datamm'])); 转换数据库的日期,但我能得到的最小值是1970-01-01。我需要获取1500和当前日期之间的日期 我能做些什么来解决这个问题??如果可能的话,我更喜欢程序解决方案。这里是一个例子 <?php $date = new DateTime( '01-01-1950' ); echo $date->for

我正在编写一个关于家谱的网站,我使用日期输入来获取日期

$datamm= strftime('%Y-%m-%d', strtotime($_POST['datamm']));
转换数据库的日期,但我能得到的最小值是
1970-01-01
。我需要获取1500和当前日期之间的日期

我能做些什么来解决这个问题??如果可能的话,我更喜欢程序解决方案。

这里是一个例子

<?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' );
?>

如果您知道日期是以何种格式输入的,则可以尝试:

$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
我希望它有帮助

试试这个,使用


您可能应该专注于使用一些第三方库,而不是官方的PHP日期时间函数

例如,对于您的高级日期时间操作需求,PHP的标准日期时间的一个很好的替代方案是moment.PHP

它受moment.js库的启发,该库的目标是解决常见的日期时间编程问题,并将标准化提升到更高的水平

您可以通过composer获得它,如:

{
  "require": {
    "fightbulc/moment": "*"
  }
}
或通过github手动安装

要解析各种输入日期,请参阅手册,以下是示例:

$m = new \Moment\Moment('1503-04-25T03:00:00', 'CET');
还有其他可供探索的备选方案,例如:

因为这是最重要的。请考虑使用,我已经编辑了答案。请试着看看它是否适合你的条件。
$m = new \Moment\Moment('1503-04-25T03:00:00', 'CET');