التحويل من تاريخ MySQL إلى تنسيق آخر باستخدام PHP
سؤال
انا املك datetime
العمود في MySQL.
كيف يمكنني تحويله إلى العرض كما مم/ي ي/س س س:م (ص/م) باستخدام PHP؟
المحلول 2
لتحويل تاريخ تم استرداده من MySQL إلى التنسيق المطلوب (mm/dd/yy H:M (AM/PM)
):
// $datetime is something like: 2014-01-31 13:05:59
$time = strtotime($datetimeFromMysql);
$myFormatForView = date("m/d/y g:i A", $time);
// $myFormatForView is something like: 01/31/14 1:05 PM
الرجوع إلى خيارات تنسيق التاريخ PHP لضبط التنسيق.
نصائح أخرى
إذا كنت تبحث عن طريقة لتطبيع التاريخ في تنسيق MySQL، فاستخدم ما يلي
$phpdate = strtotime( $mysqldate );
$mysqldate = date( 'Y-m-d H:i:s', $phpdate );
الخط $phpdate = strtotime( $mysqldate )
يقبل سلسلة وينفذ سلسلة من الاستدلالات لتحويل تلك السلسلة إلى طابع زمني يونكس.
الخط $mysqldate = date( 'Y-m-d H:i:s', $phpdate )
يستخدم هذا الطابع الزمني وPHP date
وظيفة لتحويل هذا الطابع الزمني مرة أخرى إلى تنسيق التاريخ القياسي لـ MySQL.
(ملاحظة المحرر:هذه الإجابة موجودة هنا بسبب سؤال أصلي بصيغة مربكة، وفائدة Google العامة التي قدمتها هذه الإجابة حتى لو لم تجيب بشكل مباشر على السؤال الموجود الآن)
إذا كنت تستخدم PHP 5، يمكنك أيضًا المحاولة
$oDate = new DateTime($row->createdate);
$sDate = $oDate->format("Y-m-d H:i:s");
$valid_date = date( 'm/d/y g:i A', strtotime($date));
أخيرًا الحل الصحيح لـ PHP 5.3 وما فوق:
$date = \DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date);
echo $date->format('m/d/y h:i a');
الطريقة الأسهل هي تنسيق التاريخ مباشرةً في استعلام MySQL، بدلاً من PHP.انظر الإدخال اليدوي لـ MySQL لـ DATE_FORMAT.
إذا كنت تفضل القيام بذلك بلغة PHP، فأنت بحاجة إلى تاريخ وظيفة، ولكن سيتعين عليك تحويل قيمة قاعدة البيانات الخاصة بك إلى طابع زمني أولاً.
ننسى كل شيء.مجرد استخدام:
$date = date("Y-m-d H:i:s",strtotime(str_replace('/','-',$date)))
لتنسيق أ DateTime
كائن في PHP للتخزين في MySQL يستخدم التنسيق القياسي الذي يستخدمه MySQL، وهو ايزو 8601.
تم تخزين هذا التنسيق في PHP كثابت منذ الإصدار 5.1.1، وأوصي بشدة باستخدامه بدلاً من كتابة السلسلة يدويًا في كل مرة.
$dtNow = new DateTime();
$mysqlDateTime = $dtNow->format(DateTime::ISO8601);
هذا، بالإضافة إلى قائمة بثوابت PHP DateTime الأخرى متاحة على http://php.net/manual/en/class.datetime.php#datetime.constants.types
يجب أن يؤدي هذا إلى تنسيق حقل في استعلام SQL:
SELECT DATE_FORMAT( `fieldname` , '%d-%m-%Y' ) FROM tablename
استخدم ال تاريخ وظيفة:
<?php
echo date("m/d/y g:i (A)", $DB_Date_Field);
?>
اعتمادًا على تكوين وقت MySQL الخاص بك.عادة: 2011-12-31 07:55:13 شكل.هذه الوظيفة البسيطة جدًا يجب أن تفعل السحر:
function datetime()
{
return date( 'Y-m-d H:i:s', time());
}
echo datetime(); // display example: 2011-12-31 07:55:13
أو تقدم أكثر قليلاً لمطابقة السؤال.
function datetime($date_string = false)
{
if (!$date_string)
{
$date_string = time();
}
return date("Y-m-d H:i:s", strtotime($date_string));
}
SELECT
DATE_FORMAT(demo.dateFrom, '%e.%M.%Y') as dateFrom,
DATE_FORMAT(demo.dateUntil, '%e.%M.%Y') as dateUntil
FROM demo
إذا كنت لا تريد تغيير كل وظيفة في كود PHP الخاص بك، لإظهار تنسيق التاريخ المتوقع، قم بتغييره في المصدر - قاعدة البيانات الخاصة بك.
من المهم تسمية الصفوف بـ مثل عامل التشغيل كما في المثال أعلاه (مثل dateFrom، وdateUntil).الأسماء التي تكتبها هناك هي الأسماء، وسيتم استدعاء الصفوف في النتيجة.
سيكون إخراج هذا المثال
[يوم الشهر رقمي (0..31)].[اسم الشهر (يناير..ديسمبر)].[السنة رقمي، أربعة أرقام]
مثال:5. أغسطس 2015
قم بتغيير النقاط بالفاصل الذي تختاره وتحقق من ذلك DATE_FORMAT(التاريخ، التنسيق) وظيفة لمزيد من تنسيقات التاريخ.
يمكنك أيضًا جعل استعلامك يعرض الوقت كطابع زمني لنظام Unix.وهذا من شأنه أن يتخلص من الحاجة إلى الاتصال strtotime()
وجعل الأمور أقل كثافة قليلاً على جانب PHP ...
select UNIX_TIMESTAMP(timsstamp) as unixtime from the_table where id = 1234;
ثم في PHP فقط استخدم date()
وظيفة لتنسيقه بالطريقة التي تريدها.
<?php
echo date('l jS \of F Y h:i:s A', $row->unixtime);
?>
أو
<?php
echo date('F j, Y, g:i a', $row->unixtime);
?>
أنا أحب هذا النهج بدلا من استخدامه ماي إس كيو إل'س DATE_FORMAT
وظيفة، لأنها تسمح لك بإعادة استخدام نفس الاستعلام للحصول على البيانات وتسمح لك بتغيير التنسيق في PHP.
من المزعج أن يكون لديك استعلامان مختلفان فقط لتغيير الطريقة التي يظهر بها التاريخ في واجهة المستخدم.
يمكن أن تواجه مشكلة مع التواريخ التي لم يتم إرجاعها في Unix Timestamp، لذلك هذا يناسبني...
return date("F j, Y g:i a", strtotime(substr($datestring, 0, 15)))
هذا سيفي بالغرض...
echo date('m/d/y H:i (A)',strtotime($data_from_mysql));
باستخدام PHP الإصدار 4.4.9 وMySQL 5.0، نجح هذا معي:
$oDate = strtotime($row['PubDate']);
$sDate = date("m/d/y",$oDate);
echo $sDate
PubDate
هو العمود في ماي إس كيو إل.
$date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $_POST['date'])))."'";