إذا كان لدي PHP السلسلة في YYYY-DD-MM و الزمني في الخلية, هل هناك طريقة جيدة لتحويل بينهما ؟

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

سؤال

أنا مهتم بعمل مقارنات بين تاريخ سلسلة الخلية الزمني.ومع ذلك, أنا لا أرى سهلة التحويل.أنا تطل شيء واضح ؟

هل كانت مفيدة؟

المحلول

تحويل من الطابع الزمني إلى الشكل:

date('Y-m-d', $timestamp);

تحويل من تنسيق الطابع الزمني:

mktime(0, 0, 0, $month, $day, $year, $is_dst);

انظر تاريخ و mktime المزيد من الوثائق.

عندما يتعلق الأمر تخزين الأمر متروك لكم ما إذا كنت تريد استخدام الخلية تاريخ شكل stroing مثل تنسيق التاريخ ؛ كما عدد صحيح لتخزين كما UNIX الطابع الزمني ؛ أو يمكنك استخدام الخلية تنسيق الطابع الزمني الذي يحول رقمية الزمني في تنسيق قابل للقراءة. التحقق من الخلية Doc بالنسبة الزمني معلومات عن الفندق.

نصائح أخرى

يمكنك تجنب الحاجة إلى استخدام strtotime() أو getdate() في PHP باستخدام الخلية UNIX_TIMESTAMP() وظيفة.

SELECT UNIX_TIMESTAMP(timestamp) FROM sometable

البيانات الناتجة سوف تكون معيار صحيح Unix timestamp, لذلك يمكنك أن تفعل مقارنة مباشرة time().

كتبت هذه الوظيفة الصغيرة إلى تبسيط عملية:

/**
 * Convert MySQL datetime to PHP time
 */
function convert_datetime($datetime) {
  //example: 2008-02-07 12:19:32
  $values = split(" ", $datetime);

  $dates = split("-", $values[0]);
  $times = split(":", $values[1]);

  $newdate = mktime($times[0], $times[1], $times[2], $dates[1], $dates[2], $dates[0]);

  return $newdate;
}

آمل أن يساعد هذا

strtotime() و getdate() نوعان من الوظائف التي يمكن استخدامها للحصول على مواعيد من السلاسل و الطوابع.ليس هناك معيار وظيفة المكتبة الذي يحول بين MySQL و PHP الطوابع الزمنية على الرغم من.

استخدام PHP تاريخ وظيفة.قد تضطر إلى تحويل الخلية الطابع الزمني إلى Unix timestamp في الاستعلام الخاص بك باستخدام UNIX_TIMESTAMP وظيفة في الخلية.

التاريخ سلسلة من شكل:

YYYY-MM-DD

لا يوجد لديه الوقت المرتبطة به.الخلية الزمني هو من شكل:

YYYY-MM-DD HH:mm:ss

لمقارنة اثنين, إما أن إضافة الوقت إلى تاريخ السلسلة ، مثل منتصف الليل على سبيل المثال

$datetime = '2008-08-21'.' 00:00:00';

ومن ثم استخدام وظيفة مقارنة epoc الوقت بينهما

if (strtotime($datetime) > strtotime($timestamp)) {
    echo 'Datetime later';
} else {
    echo 'Timestamp equal or greater';
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top