看上去很美 之php

最近在作的项目!由于自已的无知时间处理上出了问题!要重新作一遍数据,4,5天的工作又白费了,这其间在论坛也发过贴也回过贴,发现一个问题!今天总结一下:

看上去很美

A:我的问题

在SQL Server 2000里看到的数据格式是:2004-03-02,我以为没有时间了!所以前期的php时间处理函数就没有考虑时间,最后测试的时候发现写到MySQL里的时间戳,算出来的时间与在SQL Server里的记录不符.由于数据不用在页面显示倒致工作白费,发现后我就在页面打印了一下,输出:

2004 三月 2 14:23

header("Content-Type=text/html;Charset=GBK");

发现问题了!原来在数据库中的格式只是为了显示方便,实际上日期是完整的,这其间QQ好友提示我打印显示和数据库中的记录有显示差别,找一个格式化函数,就可以搞定,刚学php对函数也不太熟,马上查手册,找了几遍也没有发现类似功能的函数,就在论坛发了一贴:

http://topic.csdn.net/u/20080610/13/27bee5f2-af07-4e3f-a75a-9f405fbd5549.html

huigenius兄弟给了一段代码:

function formatTimeStyle($strDate){



$search = array( '一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月' ); 

$replace = array( 1,2,3,4,5,6,7,8,9,10,11,12); 

$date = str_replace($search,$replace,$strDate); 

$darray = explode(' ',$date); 

$date = array_pop($darray); 

$date = implode('-',$darray); 

return $date; 

}

 我稍微改了一下用来应对昨天的需求,在用户资料表里有个birthday列,数据显示同上面一样,在MySQL里需要的是:年 月 日 三个字段,我用上面的函数格式化一下:

$currStyle=formatTimeStyle($row[2])

来打印一下:

print $row[2]."
";
print $currStyle."
";

一定要记得对比一下输出!不然你不会发现下面的错误:

2004 三月 2 14:23

2004-3-2

看上去很美!,比起switch.让我们来看一下:str_replace函数的说明

在google搜一下:php str_replace

将某个子字符串都替换为另一个字符串(大小写不敏感)。

看英文的说明:

This function returns a string or an array with all occurrences of search in subject replaced with the given replace value.

我们按前三后四的法则再作个测试:

$test='2003 十一月 4 3:08';
print $test."
";
print formatTimeStyle($test)."
";

打印输出:

2003 十一月 4 3:08

2003-十1-4

哎!这怎么不对呀?再试一下:

$test='2003 十月 4 3:08';
print $test."
";
print formatTimeStyle($test)."
";

打印输出:

2003 十月 4 3:08

2003-10-4

正常呀!是不是眼花了?再试一下:

$test='2003 十二月 4 3:08';
print $test."
";
print formatTimeStyle($test)."
";

打印输出:

2003 十二月 4 3:08

2003-十2-4

你发现问题了么?上面的格式函数是不合格的!让我们少动一下:

function formatTimeStyle($strDate){

    $search = array('十一月','十二月','一月','二月','三月','四月','五月','六月','七月','八月','九月','十月');

    $replace = array(11,12,1,2,3,4,5,6,7,8,9,10);

    $date = str_replace($search,$replace,$strDate);



    $darray = explode(' ',$date);

    $date = array_pop($darray);

    $date = implode('-',$darray);



    return $date;

  }

再来测一下原来错误的测试用例:

$test='2003 十二月 4 3:08';
print $test."
";
print formatTimeStyle($test)."
";

打印输出:

2003 十二月 4 3:08

2003-12-4

再是原来正常的测试用例:

$test='2003 十月 4 3:08';
print $test."
";
print formatTimeStyle($test)."
";

打印输出:

2003 十月 4 3:08

2003-10-4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值