2016-11-07 4 views
1

は、私は日付を取得する日付の入力を使用し、PHP日リミット1970

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

データベースの日付を変換するために、私が得ることができる最小値であり、 1970-01-01。私は1500年から今日までの日付を取得する必要があります。

問題を解決するにはどうすればよいですか?可能ならば、私は手続き的解決法を好む。ここで

+6

は: //en.wikipedia.org/wiki/Unix_time)。代わりに、[DateTime](http://php.net/manual/en/class.datetime.php)を使用することを検討してください。 –

答えて

1

は、DateTimeのは素晴らしいです

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

例えば探索するための他の選択肢もあります:それは[UNIXエポック](httpsのだから https://github.com/swt83/php-date