求解正确时间格式

littlebirds 2015-05-20 04:00:50

$s = 'Y1320101000000XP1026629512V544930568T6B15120K20000028';
$mtime = date("Ymd",mktime(0,0,0,1,1,'20'.substr($s,-14,2)) + substr($s,-12,3) * 86400)-1;
echo $mtime; //得到结果是20150500


我想得到20150430的结果,怎么修改?

注:Y1320101000000XP1026629512V544930568T6B15120K20000028

红色部分代表15年第120天。


...全文
108 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangshl_php 2015-05-20
  • 打赏
  • 举报
回复
一个日期这么隐藏。万一数据变了岂不是很麻烦。最好能写一个到一个function 中。

echo get_str_date('15140');

function get_str_date($str)
{
	$y = substr(date('Y'),0,2);
	$date_str = strtotime($y.substr($str,0,2).'-01-01') + (substr($str,-3,3) * 86400)-1;
	return date('Y-m-d',$date_str);
}
xuzuning 2015-05-20
  • 打赏
  • 举报
回复
$s = 'Y1320101000000XP1026629512V544930568T6B15120K20000028';
$mtime = date("Ymd", mktime(0, 0, 0, 1, substr($s,-12,3), substr($s,-14,2)));
$d = $mtime;
echo date("$d z", strtotime($d));
20150430 119 那个 '20' 可以不要,加上也没问题 date('z') 表示年份中的第几天(注意1月1日是第0天) 请注意表述规则上的差异
littlebirds 2015-05-20
  • 打赏
  • 举报
回复
引用 1 楼 jam00 的回复:

$s = 'Y1320101000000XP1026629512V544930568T6B15120K20000028';
$mtime = strtotime('20'.substr($s,-14,2).'-00-00') + (substr($s,-12,3) * 86400);
echo date('Y-m-d',$mtime);//2015-03-30
结果不对,不过感谢提供思路。

$s = 'Y1320101000000XP1026629512V544930568T6B15151K20000028';
$mtime = strtotime('20'.substr($s,-14,2).'-01-01') + (substr($s,-12,3) * 86400)-1;
echo date('Ymd',$mtime);
果酱很好吃 2015-05-20
  • 打赏
  • 举报
回复

$s = 'Y1320101000000XP1026629512V544930568T6B15120K20000028';
$mtime = strtotime('20'.substr($s,-14,2).'-00-00') + (substr($s,-12,3) * 86400);
echo date('Y-m-d',$mtime);//2015-03-30

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧