我有以下问题。我有一个脚本获取电视节目的Airdate并且我在将其保存到我的数据库之前改变它。在我的本地主机上本地工作完美,但当我在线尝试并将其上传到我的网络服务器时,它显示了不同的行为。我不知道为什么会这样。
以下是一些例子:
我得到的数据:12月1日至22日播出
我的剧本应该是什么结果:2012-01-22
我上网的内容:2022/12 -
我获得的数据:播出8/29/11
我的剧本应该是什么结果:2011-08-29
我上网的内容:2029/11 -
我得到的数据:Airs 2/12/12
我的剧本应该是什么结果:2012-02-12
我上网的内容:2012/12 -
这是我的PHP脚本:
if(strstr($serie['airdate'], 'Airs')) {
$date = substr($serie['airdate'], 5);
}
if(strstr($serie['airdate'], 'Aired')) {
$date = substr($serie['airdate'], 6);
}
$mm = strstr($date, "/", true);
$mmStrLen = strlen($mm);
if((strlen($mm)) == "1") {
$mm = "0".$mm;
}
$dd = substr($date, $mmStrLen+1);
$dd = strstr($dd, "/", true);
$ddStrLen = strlen($dd);
if((strlen($dd)) == "1") {
$dd = "0".$dd;
}
$yy = substr($date, $mmStrLen+1+$ddStrLen+1);
if((strlen($yy)) == "1") {
$yy = "0".$yy;
}
$serie['date'] = "20".$yy."-".$mm."-".$dd;
$ serie ['airdate']是我得到的数据,$ serie ['date']是应该保存更改后的值的地方。
我在本地使用的PHP版本是5.3.8,而我的webhoster之一是5.2.17。但我想这不是问题的根源。
答案 0 :(得分:1)
查看您在本地与服务器分割的原始日期字符串。我愿意打赌OS日期格式在本地不同于服务器上的日期格式,并且您的字符串拆分代码不是为处理服务器使用的不同格式而设计的。
答案 1 :(得分:1)
这是处理日期的大量代码。尝试过使用strtotime()功能吗?您可以将其与date()函数配对,以便在PHP中轻松重新格式化日期。
答案 2 :(得分:1)
无法将注释格式化为代码,因此我必须将其作为答案进行编写。
请双方试试
$x=explode(' ',$serie['airdate']);
if (sizeof($x)!=2) die("Error in step 1");
$x=explode('/',$x[1]);
if (sizeof($x)!=3) die("Error in step 2");
$serie['date']=sprintf("20%02d-%02d-%02d",$x[2],$x[0],$x[1]);