PHP中,如何优雅的将mysql存储的int型“201112”输出成“2011-12”

2012-01-12 00:17:37 +08:00
 summic
5705 次点击
所在节点    PHP
34 条回复
icyflash
2012-01-12 01:04:03 +08:00
date_format(date_create_from_format('Ym', 201112), 'Y-m')
summic
2012-01-12 01:12:33 +08:00
我之前的实现实和两次 substr,感觉很ugly
loning
2012-01-12 02:32:09 +08:00
echo number_format(201112/100,2,'-','');
有点蛋疼,没C#舒服..
icyflash
2012-01-12 02:56:00 +08:00
@loning 如果是这样格式的就不行了吧 20111
reus
2012-01-12 03:30:43 +08:00
substr有什么ugly的呢,这种洁癖要不得啊要不得
vibbow
2012-01-12 03:54:09 +08:00
每一个优雅的接口后面都有一个龌龊的实现~
webgeekman
2012-01-12 08:38:37 +08:00
看看这个方法怎么样:echo date('Y-m',strtotime($yourDateFromDB.'01'));
kojp
2012-01-12 09:09:24 +08:00
loning
2012-01-13 06:57:03 +08:00
其实压根数据库就不该这样存...
ywjno
2012-01-13 09:07:28 +08:00
用正则试试?
sarices
2012-01-13 09:10:36 +08:00
...你直接纯time(),然后用d()转换就可以了,何必将日期去“-”再存?省事很多
sarices
2012-01-13 09:11:29 +08:00
打错了,一直自定义一个d()函数用作时间转换,应该是date()才对
glume
2012-01-13 09:38:22 +08:00
顶楼上。日期都存为UNIX时间。使用的时候可以用各种自定义的函数转嘛,还能搞成多少小时多少天之前这种。
ywjno
2012-01-13 09:54:09 +08:00
@glume @sarices 如果是客户的数据库的话,字段类型不是你想改就能改的
summic
2012-01-13 10:03:35 +08:00
@ywjno 不让随便改人家的数据库,为了解决一个小问题,改了字段类型,会引入更多bug
avatasia
2012-01-13 11:27:35 +08:00
dt / 100 + "-" + dt %100 最高
Hyperion
2012-01-13 11:37:27 +08:00
echo rtrim(chunk_split("201112", 4, "-"), "-");

-_-
forerunner
2012-03-09 11:57:02 +08:00
@avatasia 话说“20121”这个蛋疼的问题依旧蛋疼~
感觉还是substr +1一下
avatasia
2012-03-09 12:55:12 +08:00
@forerunner
if(@in < 100000)
@out = @in /10+ "-" + @in % 10
else
@out = @in / 100 + "-" + @in % 100
xwsoul
2012-03-12 11:47:37 +08:00
@sarices 也要看需求的, 不能一概时间戳:
1. 要做索引,索引肯定大
2. 在某些特定条件下, 如同一天生日的用户, 用时间戳就会很麻烦

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/25425

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX