Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tạo đối tượng Ngày trong PHP cho các ngày trước năm 1970 ở định dạng nhất định

Hãy thử chức năng này.

Chỉnh sửa: Đầu tiên, chúng ta sẽ chuyển năm hai chữ số thành 4 chữ số. Sau đó, chúng tôi sẽ tạo thành ngày hoàn chỉnh và chuyển nó vào chức năng.

 $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
}

Nguồn: Sử dụng strtotime cho các ngày trước năm 1970




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP PDO bindParam () và MySQL BIT

  2. Biểu đồ phả hệ / cây gia đình từ cơ sở dữ liệu

  3. Mối quan hệ thuộc về ToMany trong Laravel trên nhiều cơ sở dữ liệu

  4. Phân trang PHP &MySQL

  5. MySQL tìm kiếm giá trị json theo khóa trong mảng