2016-11-07 111 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

相關問題