我正在挖掘这个专业程序员为我设置的活动网站的代码,我发现这个功能似乎超级混乱,因为它看起来像"strtotime"
的一行代码会做同样的事情。
是不是因为我们希望在月份之后使用"Jan 2nd"
格式和两个字母?
function convert_date_to_web($date) {
if (empty($date) || $date == "0000-00-00") return $date;
switch ($date[5].$date[6]) {
case '01':
$month = 'Jan';
break;
case '02':
$month = 'Feb';
break;
case '03':
$month = 'Mar';
break;
case '04':
$month = 'Apr';
break;
case '05':
$month = 'May';
break;
case '06':
$month = 'Jun';
break;
case '07':
$month = 'Jul';
break;
case '08':
$month = 'Aug';
break;
case '09':
$month = 'Sep';
break;
case '10':
$month = 'Oct';
break;
case '11':
$month = 'Nov';
break;
case '12':
$month = 'Dec';
}
if($date[9] == "1") {
$day = $date[9]."st";
}
else if ($date[9] == "2") {
$day = $date[9]."nd";
}
else if ($date[9] == "3") {
$day = $date[9]."rd";
}
else {
$day = $date[9]."th";
}
if($date[8] != "0") {
$day = $date[8].$day;
}
$date = $month." ".$day.", ".$date[0].$date[1].$date[2].$date[3];
return $date;
}
我的版本是
$timestamp = strtotime($event->start_date);
$start_date = date("M d, Y", $timestamp);
答案 0 :(得分:2)
这是原始函数的精确复制。我使用了两个版本,第一个使用strtotime,第二个使用explode来避免使用strtotime。
$date = '2011-10-01';
$date_format = 'M jS, Y'; // Three letter month, day name w/o leading zero, day suffix, year
echo date( $date_format, strtotime( $date)) . "\n";
$date_pieces = explode( '-', $date);
echo date( $date_format, mktime( 0, 0, 0, $date_pieces[1], $date_pieces[2], $date_pieces[0]));
答案 1 :(得分:0)
烨。我认为这就是长期功能的原因所在。它是添加“st”,“nd”,“rd”和“th”。
您的代码不会这样做。也许你可以这样试试? (需要调试,因为我从未在实际的php上测试过它)
$timestamp = strtotime($event->start_date);
$start_date = date("M d", $timestamp);
$lastNum = substr($start_date, -1)
switch($lastNum) {
case "0":
break;
case "1":
$start_date .= "st"; break;
case "2":
$start_date .= "nd"; break;
case "3":
$start_date .= "rd"; break;
default:
$start_date .= "th"; break;
}
$start_date .= date(", Y", $timestamp);
答案 2 :(得分:0)
我更喜欢这样的爆炸()解决方案而不是strtotime()的原因是它们提供的确定性,可移植的结果少于surprising而strtotime()会产生一些复杂的魔法。
答案 3 :(得分:0)
与所有编程一样,有多种方法可以做某事。经验教会程序员以某种方式做事。从这个函数的外观来看,如果要将mysql日期的默认输出格式转换为将月份转换为字符串的版本。这对我来说很好看