2016-11-07 5 views
1

ich eine Website über Genealogie bin Programmierung, habe ich das Datum Eingabedaten zu erwerben, undPHP date Grenze 1970

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

die Termine für die Datenbank zu konvertieren, aber der Minimalwert, den ich bekommen kann, ist 1970-01-01. Ich muss Daten zwischen 1500 und dem aktuellen Tag erwerben.

Was kann ich tun, um das Problem zu lösen? Ich bevorzuge eine prozedurale Lösung, wenn es möglich ist.

+6

Da, dass die [UNIX Epoch] (https ist: //en.wikipedia.org/wiki/Unix_time). Erwägen Sie stattdessen die Verwendung von [DateTime] (http://php.net/manual/en/class.datetime.php). –

Antwort

1

Hier ist ein Beispiel,

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

Datetime groß ist, können Sie alle Arten tun, wenn Sie es verstehen.

Zum Beispiel dies ein Jahr hinzufügen und Echo die Start- und Enddaten,

<?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

Wenn Sie wissen, dass in welchem ​​Format Sie das Datum vom Eingang kommt, dann können Sie versuchen:

$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 

wenn Sie nehmen Zeitstempel als Eingabe dann:

$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 

ich hoffe, dass es hel ps

+0

Ich habe die Antwort bearbeitet. Bitte versuchen Sie zu sehen, ob es zu Ihrem Zustand passt. – Learner

0

die Sie interessieren, createFromFormat

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

DEMO

0

Sie sollten wahrscheinlich auf mit einigen 3rd-Party-Bibliothek konzentrieren anstelle von offiziellen PHP Datetime-Funktionen.

Zum Beispiel für Ihre erweiterte Datetime-Manipulation Anforderungen, eine gute Alternative für Standard-Datetime PHP wäre moment.php

Es wird von moment.js Bibliothek, dessen Ziel es ist inspiriert ist üblich, Datetime-Programmierung Probleme zu beheben und bringen die Standardisierung auf ein höheres Niveau.

Sie können es über Komponisten erhalten wie:

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

Oder über Github für die manuelle Installation.

Um verschiedene Eingabedatum konsultieren Sie einen manuellen zu analysieren, ist unten Beispiel:

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

Es gibt auch andere Alternativen, zum Beispiel zu erkunden: https://github.com/swt83/php-date