sql >> Database >  >> RDS >> Mysql

Maak een Date-object in PHP voor datums vóór 1970 in een bepaald formaat

Probeer deze functie.

Bewerken: Eerst zullen we het jaar van twee cijfers omzetten in vier cijfers. Dan zullen we de volledige datum vormen en deze doorgeven aan de functie.

 $original_date = '22-10-49';
    $date_part = explode('-',$original_date);

    $baseyear = 1900; // range is 1900-2062
    $shortyear = $date_part[2];
    $year = 100 + $baseyear + ($shortyear - $baseyear) % 100;
    $subdate = substr( $original_date, 0, strrpos( $original_date, '-' ) );
    $string = $subdate."-".$year;

    echo safe_strtotime($string);

function safe_strtotime($string)
{
    if(!preg_match("/\d{4}/", $string, $match)) return null; //year must be in YYYY form
    $year = intval($match[0]);//converting the year to integer
    if($year >= 1970) return date("Y-m-d", strtotime($string));//the year is after 1970 - no problems even for Windows
    if(stristr(PHP_OS, "WIN") && !stristr(PHP_OS, "DARWIN")) //OS seems to be Windows, not Unix nor Mac
    {
        $diff = 1975 - $year;//calculating the difference between 1975 and the year
        $new_year = $year + $diff;//year + diff = new_year will be for sure > 1970
        $new_date = date("Y-m-d", strtotime(str_replace($year, $new_year, $string)));//replacing the year with the new_year, try strtotime, rendering the date
        return str_replace($new_year, $year, $new_date);//returning the date with the correct year
    }
    return date("Y-m-d", strtotime($string));//do normal strtotime
}

Bron:Strtotime gebruiken voor datums vóór 1970




  1. Hoe Min en Max waarde op dynamische draaitabel te tonen?

  2. Wat is de locatie van mysql-client .my.cnf in XAMPP voor Windows?

  3. syntaxis voor enkele rij MERGE / upsert in SQL Server

  4. Hoe een mysql-blob-afbeelding in asp.net-afbeeldingsbeheer weer te geven?