php格式化时间问题。

时间:2022-10-19 16:22:40
php5.1.2与MSSQL链接。
时间段是smalldatetime。
在库里看到的时间是:2007-04-06 21:23:00.000
用PHP显示出来的却是:2007 四月 6 21:23
请问,我要如何得到2007-04-06这样的时间格式?

23 个解决方案

#1


date('Y-m-d',strtotime($row['somedate']));

#2


谢谢回复
用date('Y-m-d',strtotime($row['somedate']));得到的是1970-01-01
不过如果用date('Y-m-d',time());就可以得到今天的日期。
我估计是因为无法识别“2007 四月 6 21:23”这个字符串的问题

#3


$s = "2007-04-06 21:23:00.000";
$t = explode(" ",$s);
echo $t[0];

#4


楼上的方法也不行,因为得到的时间字符串是2007 四月 6 21:23
explode(" ","2007 四月 6 21:23")[0] = "2007"

#5


在库里看到的时间是:2007-04-06 21:23:00.000
用PHP显示出来的却是:2007 四月 6 21:23

你用PHP是怎么显示的???直接用echo??

#6


我是初学者,没用过php5的,有个笨方法,不知道可行否,你可以试下。

$s = "somedate";
$t = explode(" ",$s);

if ($t[1]=="一月") $month="01";
if ($t[1]=="二月") $month="02";
if ($t[1]=="三月") $month="03";
if ($t[1]=="四月") $month="04";
if ($t[1]=="五月") $month="05";
if ($t[1]=="六月") $month="06";
if ($t[1]=="七月") $month="07";
if ($t[1]=="八月") $month="08";
if ($t[1]=="九月") $month="09";
if ($t[1]=="十月") $month=10;
if ($t[1]=="十一月") $month=11;
if ($t[1]=="十二月") $month=12;

echo $t[0]."-".$month."-".$t[2];

#7


我是用echo直接以字符串形式显示出来的。
你用的方法我也想过,不过我觉得对于这种格式的时间应该有相应的方法或函数来格式化。

#8


$s = "somedate";
$t = explode(" ",$s);

switch ($t[1])
  case "一月":
    $month="01";
    break;
  case "二月":
    $month="02";
    break;
  case "三月":
    $month="03";
    break;
  case "四月":
    $month="04";
    break;
  case "五月":
    $month="05";
    break;
  case "六月":
    $month="06";
    break;
  case "七月":
    $month="07";
    break;
  case "八月":
    $month="01";
    break;
  case "九月":
    $month="09";
    break;
  case "十月":
    $month=10;
    break;
  case "十一月":
    $month=11;
    break;
  case "十二月":
    $month=12;
    break;
}

echo $t[0]."-".$month."-".$t[2];


练练手而已,不知道正确否....以上2种方式

#9


$s="2007 四月 6 21:23";
echo date("Y-m-d",strtotime($s));

我在PHP4.4.6下面测试正常,不知道PHP5的行不行...

#10


错了错了,以上方法错误,哈哈~ 没注意看,返回日期是 2007-04-26,,,,,,6日和26日不同,刚才没详细看,不好意思...

#11


用switch和if应该是可行的,原理一样。不过我没做过测试。
$s="2007 四月 6 21:23";
echo date("Y-m-d",strtotime($s));
在php5.1.2下等到的是1970-01-01
这应该意味着$s得到的不是有效的时间字符串

#12


不好意思,我不知道捷径,所以就搞弯路出来。。。

#13


没事。不管捷径弯径
解决方法终归是解决方法的。
在没有办法的情况下还是得采用你提供的方法了。
谢谢你的参与

#14


再等一晚。明天结贴

#15


这个是MSSQL的问题,他会调用系统的时间显示格式

你可以用strtotime转化为UNIX时间戳后,然后用date函数

#16


用strtotime得到的是空值,所以楼上的方法也不可行

#17


看来是找不到人会了
所以还是采用了boing()的方法
结贴

#18


那在查询语句中使用mssql函数取值试试。
$sql = 'select substring(存储时间的字段,0,10) from table';

#19


我也碰到类似的问题,一年半后还是没有解决!

#20


我是在SQL语句中加上一个字段:month(sj) month

然后再用 $t = explode(" ",$s); 

另外如果要用到时分的话,如果是9:59或10:00,分别在$[4]和$[3]

显示时分用:echo $t[3]==""?$t[4]:$t[3];

#21


 date( 'Y-m-d ',$userinfo['lastvisit'])

我是这样搞定的

效果不错

#22


假设我是用$rs["addtime"]来取得数据里记录添加的时间,我要把时间格式化成2010/10/11的格式,用下面的方法就行!
    date( 'Y-m-d ',strtotime($rs["addtime"]));

 如果用的是date( 'Y-m-d ',$rs["addtime"])这样得到的时间是1970/01/01的格式。

#23


<?php 
echo date("Y-m-d",strtotime($row_rsLesson['N_Date']));
?> 

将 $row_rsLesson['N_Date']) 改为你的时间记录字段内容 
这里用到两个函数 一个 是date() 一个 是strtotime() 

date() :传入时间戳值,将时间戳格式化传回 

strtotime () 将任何英文文本的日期时间描述解析为 UNIX 时间戳 

#1


date('Y-m-d',strtotime($row['somedate']));

#2


谢谢回复
用date('Y-m-d',strtotime($row['somedate']));得到的是1970-01-01
不过如果用date('Y-m-d',time());就可以得到今天的日期。
我估计是因为无法识别“2007 四月 6 21:23”这个字符串的问题

#3


$s = "2007-04-06 21:23:00.000";
$t = explode(" ",$s);
echo $t[0];

#4


楼上的方法也不行,因为得到的时间字符串是2007 四月 6 21:23
explode(" ","2007 四月 6 21:23")[0] = "2007"

#5


在库里看到的时间是:2007-04-06 21:23:00.000
用PHP显示出来的却是:2007 四月 6 21:23

你用PHP是怎么显示的???直接用echo??

#6


我是初学者,没用过php5的,有个笨方法,不知道可行否,你可以试下。

$s = "somedate";
$t = explode(" ",$s);

if ($t[1]=="一月") $month="01";
if ($t[1]=="二月") $month="02";
if ($t[1]=="三月") $month="03";
if ($t[1]=="四月") $month="04";
if ($t[1]=="五月") $month="05";
if ($t[1]=="六月") $month="06";
if ($t[1]=="七月") $month="07";
if ($t[1]=="八月") $month="08";
if ($t[1]=="九月") $month="09";
if ($t[1]=="十月") $month=10;
if ($t[1]=="十一月") $month=11;
if ($t[1]=="十二月") $month=12;

echo $t[0]."-".$month."-".$t[2];

#7


我是用echo直接以字符串形式显示出来的。
你用的方法我也想过,不过我觉得对于这种格式的时间应该有相应的方法或函数来格式化。

#8


$s = "somedate";
$t = explode(" ",$s);

switch ($t[1])
  case "一月":
    $month="01";
    break;
  case "二月":
    $month="02";
    break;
  case "三月":
    $month="03";
    break;
  case "四月":
    $month="04";
    break;
  case "五月":
    $month="05";
    break;
  case "六月":
    $month="06";
    break;
  case "七月":
    $month="07";
    break;
  case "八月":
    $month="01";
    break;
  case "九月":
    $month="09";
    break;
  case "十月":
    $month=10;
    break;
  case "十一月":
    $month=11;
    break;
  case "十二月":
    $month=12;
    break;
}

echo $t[0]."-".$month."-".$t[2];


练练手而已,不知道正确否....以上2种方式

#9


$s="2007 四月 6 21:23";
echo date("Y-m-d",strtotime($s));

我在PHP4.4.6下面测试正常,不知道PHP5的行不行...

#10


错了错了,以上方法错误,哈哈~ 没注意看,返回日期是 2007-04-26,,,,,,6日和26日不同,刚才没详细看,不好意思...

#11


用switch和if应该是可行的,原理一样。不过我没做过测试。
$s="2007 四月 6 21:23";
echo date("Y-m-d",strtotime($s));
在php5.1.2下等到的是1970-01-01
这应该意味着$s得到的不是有效的时间字符串

#12


不好意思,我不知道捷径,所以就搞弯路出来。。。

#13


没事。不管捷径弯径
解决方法终归是解决方法的。
在没有办法的情况下还是得采用你提供的方法了。
谢谢你的参与

#14


再等一晚。明天结贴

#15


这个是MSSQL的问题,他会调用系统的时间显示格式

你可以用strtotime转化为UNIX时间戳后,然后用date函数

#16


用strtotime得到的是空值,所以楼上的方法也不可行

#17


看来是找不到人会了
所以还是采用了boing()的方法
结贴

#18


那在查询语句中使用mssql函数取值试试。
$sql = 'select substring(存储时间的字段,0,10) from table';

#19


我也碰到类似的问题,一年半后还是没有解决!

#20


我是在SQL语句中加上一个字段:month(sj) month

然后再用 $t = explode(" ",$s); 

另外如果要用到时分的话,如果是9:59或10:00,分别在$[4]和$[3]

显示时分用:echo $t[3]==""?$t[4]:$t[3];

#21


 date( 'Y-m-d ',$userinfo['lastvisit'])

我是这样搞定的

效果不错

#22


假设我是用$rs["addtime"]来取得数据里记录添加的时间,我要把时间格式化成2010/10/11的格式,用下面的方法就行!
    date( 'Y-m-d ',strtotime($rs["addtime"]));

 如果用的是date( 'Y-m-d ',$rs["addtime"])这样得到的时间是1970/01/01的格式。

#23


<?php 
echo date("Y-m-d",strtotime($row_rsLesson['N_Date']));
?> 

将 $row_rsLesson['N_Date']) 改为你的时间记录字段内容 
这里用到两个函数 一个 是date() 一个 是strtotime() 

date() :传入时间戳值,将时间戳格式化传回 

strtotime () 将任何英文文本的日期时间描述解析为 UNIX 时间戳