التحويل من تاريخ MySQL إلى تنسيق آخر باستخدام PHP

StackOverflow https://stackoverflow.com/questions/136782

  •  02-07-2019
  •  | 
  •  

سؤال

انا املك 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));

مرجع: http://php.net/manual/en/function.date.php

أخيرًا الحل الصحيح لـ 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'])))."'";
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top