سؤال

أحاول تحويل 2010-02 إلى فبراير 2010. لكنني أظل حصلت على ديسمبر 1969

لقد حاولت استخدام mktime، strtotime، وبعض مزيج من الاثنين، ولكن لا يزال لم يتمكن من القيام بذلك ...

هذا ما جربته مؤخرا ...

$path_title = date('F, Y', mktime(0,0,0,2,0,2010));
هل كانت مفيدة؟

المحلول

سيكون هذا وسيلة للقيام بذلك:

$dateString = '2010-02';
list($year, $month) = explode('-', $dateString);
$timeStamp = mktime(0, 0, 0, $month, 1, $year);
echo date('F, Y', $timestamp);

هناك طريقة أخرى هي:

$dateString = '2010-02';
$timestamp = strtotime($dateString . '-01');
echo date('F, Y', $timestamp);

strtotime لا يمكن التعامل مع التواريخ الغامضة مثل "2010-02"، ولكن إذا قمت بإنجاحه في أنه يجب أن تعمل.

خلاف ذلك، قد ترغب في النظر في شيء مثل DateTime::createFromFormat.

نصائح أخرى

جرب هذا:

$str = '2010-02';
echo date('F, Y',mktime(0,0,0,substr($str,-2),1,substr($str,0,4)));

عليك أن تتأكد من استخدام قيم صالحة mktime(). وبعد في مثالك الذي قمت بتحريره في السؤال، لديك 0 كلما كان اليوم، وهو اليوم الأول في اليوم الأول ناقص واحد، مما يجعلك في الشهر السابق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top