2016-11-07 107 views
1

我编程有关家谱网站,我使用的日期输入到收购日期,以及PHP日期限制1970年

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

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

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

+6

因为那是[UNIX时代](HTTPS: //en.wikipedia.org/wiki/Unix_time)。考虑使用[DateTime](http://php.net/manual/en/class.datetime.php)。 –

回答

1

下面是一个例子,

<?php 
    $date = new DateTime('01-01-1950'); 
    echo $date->format('Y-m-d'); 
?> 

日期时间是伟大的,你可以,一旦你了解它做各种各样。

举例来说,这将增加一年呼应的开始和结束日期,

<?php 
    $date = new DateTime('01-01-1950'); 
    echo $date->format('Y-m-d')."\n"; 
    $date->modify('+1 years'); 
    echo $date->format('Y-m-d'); 
?> 
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 

我希望它HEL PS

+0

我编辑了答案。请尝试查看它是否符合您的条件。 – Learner

0

试试这个,使用createFromFormat

// pass your date format 
$date = DateTime::createFromFormat('d M Y','17 Jan 1500'); 
echo $date->format('Y-m-d'); 

DEMO

0

你或许应该着眼于使用一些第三方库,而不是正式的PHP的日期时间函数。

例如,对于您的先进操作日期时间要求,PHP标准的datetime一个很好的选择将是moment.php

它是由moment.js库,其目的是解决常见的日期时间的编程问题的启发,并将标准化推向更高水平。

{ 
    "require": { 
    "fightbulc/moment": "*" 
    } 
} 

或通过github上进行手动安装:

您可以通过像作曲家获得它。

为了解析各种输入日期查阅手册,下面是例如:

$m = new \Moment\Moment('1503-04-25T03:00:00', 'CET'); 

还有其它替代的探索,例如: https://github.com/swt83/php-date

相关问题