php - التاريخ في عنوان ورل يوم/شهر/سنة



mysql date (1)

عند استخدام strotime() تحتاج إلى التأكد من استخدام تنسيق strotime() صالح . وإلا ستعود strtotime() false أو تعطيك قيمة غير متوقعة.

التواريخ التي تستخدم تنسيق شكس / شكس / زكسكس يفترض أن تكون في تنسيق الولايات المتحدة مما يعني أول رقمين يمثلان الشهر، يمثل الرقمان التاليان يوم من الشهر، وتمثل الأرقام الأربعة الأخيرة السنة. عند استخدام الشرطات، يفترض أن تكون التواريخ بتنسيق أوروبي. فمثلا:

04/18/2017 = April 18, 2017
12/18/2017 = December 18, 2017
18-04-2017 = April 18, 2017
18-12-2017 = December 18, 2017

إذا قمت بالتبديل عن طريق الخطأ strtotime() اليوم والشهر strtotime() سيعود كاذبة لأن التاريخ غير صالح.

18/04/2017 // error
18/12/2017 // error
04-18-2018 // error
12-18-2017 // error

الأمثلة أعلاه هي مباشرة إلى الأمام. ولكن يمكنك مواجهة المشاكل عندما تكون التواريخ غامضة. فمثلا:

04/12/2017 = April 12, 2017
12/04/2017 = December 4, 2017
04-12-2017 = December 4, 2017
12-04-2017 = April 12, 2017

في الأمثلة أعلاه عن طريق تحويل اليوم والشهر ما زلنا الحصول على تواريخ صالحة التي يمكن أن تسبب نتائج غير متوقعة في التطبيق الخاص بك. لحل هذه المشكلات المحتملة فمن المستحسن استخدام DateTime::createFromFormat() لتحليل تاريخ الإعلان إرجاع كائن DateTime::createFromFormat() التي يمكنك الحصول على الطابع الزمني أونيكس ، تحويل التاريخ إلى تنسيق آخر ، أو استخدامه للمقارنة مع غيرها DateTime الكائنات.

// Parse US date format
$date1 = DateTime::createFromFormat('m/d/Y', '04/18/2017');

// Get Unix timestamp of 1493581268
$timestamp = $date1->getTimestamp();

// Parse European date format
$date2 = DateTime::createFromFormat('d-m-Y', ''18-04-2017);

// Get MySQL format (ISO-8601) of 2017-04-18
$mysqlDate = $date2->format('Y-m-d');

أنظر أيضا:

بالنسبة لحالتك المحددة، سوف تعمل التعليمات البرمجية التالية:

$date = $date1 = DateTime::createFromFormat('m/d/Y', '20/02/2000');
$D->query = $date->format('Y-m-d'); // 2000-02-20

تمرر تاريخا (يوم / شهر / سنة) في عنوان ورل بالتنسيق التالي:

http://www.website.com/_parameter=20/02/2000

أستخدم فب التالي لتحويله إلى تنسيق يي-مم-د.

<?php

    $D->query = '';

        if ($this->param('_parameter')) $D->query = date('Y-m-d', strtotime($this->param('_parameter'))); 

?>

وقاعدة البيانات الخاصة بي كما يلي:

SELECT idtask FROM task WHERE unfinish=1 AND date LIKE '%".$D->query."%' "

ما سبق ذكر ما يلي:

1970-01-01





datetime