【发布时间】:2023-03-14 12:50:02
【问题描述】:
有没有更简单的编码方式?当我的服务器有时每秒高达 300 次单独调用这个转换时,调用一个简单的转换需要 1.6kb,或者我只是一个谨慎的人?
还要注意,这不是我编写的唯一一个这样的转换函数,而且服务器的构建速度相当快(~0.3%/24 小时)。
任何帮助将不胜感激!先感谢您! :)
<?php
function date2formal($a) {
$y = substr($a, 0, 4);
switch(substr($a, 5, 2);) {
case "01": $m = "January"; break;
case "02": $m = "February"; break;
case "03": $m = "March"; break;
case "04": $m = "April"; break;
case "05": $m = "May"; break;
case "06": $m = "June"; break;
case "07": $m = "July"; break;
case "08": $m = "August"; break;
case "09": $m = "September"; break;
case "10": $m = "October"; break;
case "11": $m = "November"; break;
case "12": $m = "December"; break;
}
switch(substr($a, 8, 2)) {
case "01": $d = "1st"; break;
case "02": $d = "2nd"; break;
case "03": $d = "3rd"; break;
case "04": $d = "4th"; break;
case "05": $d = "5th"; break;
case "06": $d = "6th"; break;
case "07": $d = "7th"; break;
case "08": $d = "8th"; break;
case "09": $d = "9th"; break;
case "10": $d = "10th"; break;
case "11": $d = "11th"; break;
case "12": $d = "12th"; break;
case "13": $d = "13th"; break;
case "14": $d = "14th"; break;
case "15": $d = "15th"; break;
case "16": $d = "16th"; break;
case "17": $d = "17th"; break;
case "18": $d = "18th"; break;
case "19": $d = "19th"; break;
case "20": $d = "20th"; break;
case "21": $d = "21st"; break;
case "22": $d = "22nd"; break;
case "23": $d = "23rd"; break;
case "24": $d = "24th"; break;
case "25": $d = "25th"; break;
case "26": $d = "26th"; break;
case "27": $d = "27th"; break;
case "28": $d = "28th"; break;
case "29": $d = "29th"; break;
case "30": $d = "30th"; break;
case "31": $d = "31st"; break;
}
return $m.", ".$d.", ".$y;
}
?>
谢谢!!!
我稍微调整了您的答案以节省几个字节,结果与我的原始代码相比,在 15 分钟的实时测试中显示 ~0.113%/client! (总体而言,所有功能将节省更多...估计>2%!)
function date2formal($a) {$b = new DateTime(substr($a, 0, 10)); return $b->format('F, jS, Y');}
【问题讨论】:
-
考虑使用 DateTimeInterface 或至少 date() 函数处理日期。然后你会有很多有用的功能,比如php.net/manual/en/datetime.format.php
-
添加了一个例子(见答案)。日期和时间怎么样,PHP 具有涵盖 99% 的情况的预构建功能,恕我直言。