小技巧:日期转换为中文日期[2012-03-20]-->[二〇一二日三月二十日]

楼主
我是社区第2173位番薯,欢迎点我头像关注我哦~
本帖最后由 mosz 于 2012-3-21 12:45 编辑

特别感谢六楼的年华同学,仔细看了帮助后,获益良多,很久没有关注,才发现自己的方法复杂到几点,现整理出简洁方法,展现给大家,再次感谢。

效果:
例如:2012-03-20;输出为:二〇一二日三月二十日

方法一:(适用于6.5、7.0版本)
设计器单元格:
A1:=FORMAT(TODAY(),"yyyy-MM-dd")
A2:=REPLACE(NUMTO(YEAR(A1),true),"零","〇")+"年"+NUMTO(MONTH(A1),false)+"月"+NUMTO(DAY(A1),false)+"日"
PS:使用中文日期,直接调用A2单元格即可,或者在A1单元格的公式形态里设置A2的公式。

方法二:(适用于6.2等老版本)
设计器单元格:
A1:=FORMAT(TODAY(),"yyyy-MM-dd")
A2:=if(LEN(MID(A1,1,1))>0,if(MID(A1,1,1)!=0,NUMTO(TOINTEGER(MID(A1,1,1))),"〇"),"〇")
A3:=if(LEN(MID(A1,2,1))>0,if(MID(A1,2,1)!=0,NUMTO(TOINTEGER(MID(A1,2,1))),"〇"),"〇")
A4:=if(LEN(MID(A1,3,1))>0,if(MID(A1,3,1)!=0,NUMTO(TOINTEGER(MID(A1,3,1))),"〇"),"〇")
A5:=if(LEN(MID(A1,4,1))>0,if(MID(A1,4,1)!=0,NUMTO(TOINTEGER(MID(A1,4,1))),"〇"),"〇")
A6:=if(LEN(MID(A1,6,1))>0,if(MID(A1,6,1)==0,"",if(MID(A1,6,1)==1,"十",if(MID(A1,6,1)==2,"二十",if(MID(A1,6,1)==3,"三十","")))),"")
A7:=if(LEN(MID(A1,7,1))>0,NUMTO(TOINTEGER(MID(A1,7,1))),"")
A8:=if(LEN(MID(A1,9,1))>0,if(MID(A1,9,1)==0,"",if(MID(A1,9,1)==1,"十",if(MID(A1,9,1)==2,"二十",if(MID(A1,9,1)==3,"三十","")))),"")
A9:=if(LEN(MID(A1,10,1))>0,NUMTO(TOINTEGER(MID(A1,10,1))),"")
A10:=CONCATENATE(A2,A3,A4,A5,"年",A6,A7,"月",A8,A9,"日")
PS:使用中文日期时,直接调用A10单元格就可以了,小小技巧,免费共享,希望能减少大家在设计过程中的小麻烦,期望得到大家的分享,共同提高。


分享扩散:

沙发
发表于 2012-3-20 10:20:00
谢谢分享
板凳
发表于 2012-3-20 11:07:28
js实现这个是不错的,不过个人认为还是在sql层修改比较简单,而且速度也会有很大提升的
地板
发表于 2012-3-20 11:15:17
make之。
5楼
发表于 2012-3-21 08:43:32
感谢楼主分享,但是其实介个直接在单元格用公式形态也弄得出来啊...
6楼
发表于 2012-3-22 15:44:36
无意间发现多了个文档交流区耶
7楼
发表于 2012-3-22 15:46:15
谢谢楼主分享,嘿嘿
8楼
发表于 2012-3-24 14:37:16
不错
9楼
发表于 2012-3-31 19:15:45
以后用得着
10楼
发表于 2012-4-2 09:37:24
这个搞的太复杂了,换成我就做一个to_data 的sql就完事了,搞那么复杂,效率那么低
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

9回帖数 1关注人数 7370浏览人数
最后回复于:2012-4-2 09:37

返回顶部 返回列表