标题:在vfp中把数字日期换成汉字日期?
只看楼主
浪子壹号
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-6-11
 问题点数:0 回复次数:8 
在vfp中把数字日期换成汉字日期?
怎么写代码呢?
我写了可是输入{^1986-11-14}时,最后的结果是一九八六年月日

有点问题,不知道哪里错了,哦,帮我看一下,谢了!

set talk off
clear
input "pls input a date :" to x
c1="一二三四五六七八九十"
q=space(0)
b1=year(x)
q1=space(0)
do while b1>0
h1=b1%10
p1=subs(c1,2*h1-1,2)
q1=p1+q1
b1=int(b1/10)
enddo
b2=month(x)
q2=space(0)8k
do while len(b2)=2
h2=b2%10
p2=subs(c1,2*h2-1,2)
q2=p2+q2
b2=int(b2/10)
else len(b2)=1
p2=subs(c1,2*b2-1,2)
q2=p2+q2
enddo
b3=day(x)
q3=space(0)
do while len(b3)=2
h3=b3%10
p3=subs(c1,2*h3-1,2)
q3=p3+q3
b3=int(b3/10)
else len(b3)=1
p3=subs(c1,2*b3-1,2)
q3=p3+q3
enddo
q=q1+"年"+q2+"月"+q3+"日"
?Q
set talk on
搜索更多相关主题的帖子: vfp 汉字 数字 
2007-06-12 12:10
浪子壹号
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-6-11
得分:0 
谢谢!
2007-06-12 14:02
啸凡
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1356
专家分:885
注 册:2006-2-22
得分:0 
do while len(b2)=2
Else
Enddo
do while len(b3)=2
Else
Enddo
这两个循环结构应该是有问题的。

年份您已经正确转换了,对月份,我是这么转换的(只用三行命令):
lcYF=MONTH(X)
lcMonth='一 二 三 四 五 六 七 八 九 十 十一十二'
lcChmonth=AllTrim(lcMonth,((lcYF-1)*4+1),4)+'月'

日子嘛,您自己再搞一搞。
另外,你还必须考虑一下“〇”这个字符吧,比如2007年

[此贴子已经被作者于2007-6-12 19:42:42编辑过]


两人行已有我师……
2007-06-12 14:19
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
得分:0 

啸凡解释得挺好!


2007-06-13 12:19
浪子壹号
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-6-11
得分:0 
对,要考虑0的问题,可是我不大会啊,

能给我完整的代码吗?

谢谢了!
2007-06-13 21:29
syecho
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-6-10
得分:0 

本人有收获,替啸凡总结一下:


set talk off
clear
x=date()
input "pls input a date :" to x
n_year=year(x)
n_month=month(x)
n_day=day(x)

&&计算年
cy_string='零一二三四五六七八九 '
c_year=""
for i=1 to 4
c_temp=substr(str(n_year,4),i,1)
n_temp=val(c_temp)+1
c_year=c_year+alltrim(substr(cy_string,((n_temp-1)*2+1),2))
endfor

&&计算月
lcYF=n_month
lcMonth='一 二 三 四 五 六 七 八 九 十 十一十二'
lcChmonth=alltrim(substr(lcMonth,((lcYF-1)*4+1),4))+'月'


&&计算日
cd_string='一 二 三 四 五 六 七 八 九 十 '
cd_string=cd_string+'十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 '
cd_string=cd_string+'二十一二十二二十三二十四二十五二十六二十七二十八二十九三十 三十一'
c_day=alltrim(substr(cd_string,((n_day-1)*6+1),6))+'日'

c_date=c_year+"年"+lcChmonth+c_day
set date to ymd
set century on

? x," ",c_date

[此贴子已经被作者于2007-6-14 0:00:43编辑过]

2007-06-13 23:59
啸凡
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1356
专家分:885
注 册:2006-2-22
得分:0 

呵呵,条条大路通罗马,楼上的算法也不错


两人行已有我师……
2007-06-14 15:47
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
程序代码:
CLEAR
dDate=DATE()
* 年
?CHRTRANC(TRANSFORM(YEAR(dDATE)),[0123456789],[〇一二三四五六七八九])+[]
* 月
?GETWORDNUM([一,二,三,四,五,六,七,八,九,十,十一,十二],MONTH(DDATE),[,])+[]
* 日
lcDay=[一,二,三,四,五,六,七,八,九,十,十一,十二,十三,十四,十五,十六,十七,十八,十九,二十,二十一,二十二,二十三,二十四,二十五,二十六,二十七,二十八,二十九,三十,三十一]
?GETWORDNUM(lcDay,Day(DDATE),[,])+[]

坚守VFP最后的阵地
2014-03-23 04:03
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
这个命令用的够绝。。。
GETWORDNUM([一,二,三,四,五,六,七,八,九,十,十一,十二],MONTH(DDATE),[,])+[月]
2016-02-26 15:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-146763-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.802763 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved