PHP日期限制1970

时间:2016-11-07 12:23:16

标签: php date

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

$datamm= strftime('%Y-%m-%d', strtotime($_POST['datamm']));

转换数据库的日期,但我可以得到的最小值是1970-01-01。我需要获得1500到当天之间的日期。

我该怎么做才能解决问题?如果可能的话,我更喜欢程序解决方案。

4 个答案:

答案 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