首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

关于日期显示有关问题,在线急等

2012-03-09 
关于日期显示问题,在线急等!我用VF做一个报表是可以打印出来的一个通知书最后要有一个落款时间.可是系统能

关于日期显示问题,在线急等!
我用VF做一个报表       是可以打印出来的一个通知书       最后要有一个落款   时间.
可是系统能出来的日期是阿拉伯数字的时间       但我要的是二〇〇七年这种时间  
请问各位大虾怎么处理

[解决办法]
&&试一试
set talk off
clear
x=date()

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
[解决办法]
以下这个自定义过程可能更简化一些:

PARAMETERS vriqidx &&中文日期大写表示格式
IF EMPTY(vriqidx) &&如果是空的日期型(或日期时间型)则返回空值
riqidx= ' '
RETU riqidx
ENDIF

IF TYPE( 'vriqidx ')= 'D ' OR TYPE( 'vriqidx ')= 'T '
vn0=ALLTRIM(STR(YEAR(vriqidx)))
vn= ' '
FOR i=1 TO LEN(vn0) &&使用for语句使得即使输入“103.02.25”这样的日期也能转换!
vn=vn+IIF(SUBSTR(vn0,i,1)= '0 ', '○ ',;
SUBSTR( '一二三四五六七八九 ',VAL(SUBSTR(vn0,i,1))+VAL(SUBSTR(vn0,i,1))-1,2))
ENDFOR &&取得某年的大写

vy0=MONTH(vriqidx)
IF vy0> 10
vy=IIF(vy0=11, '十一 ', '十二 ')
ELSE
vy=SUBSTR( '一二三四五六七八九十 ',vy0+vy0-1,2)
ENDIF &&取得某月的大写

vr0=ALLTRIM(STR(DAY(vriqidx)))
IF VAL(vr0) <10
vr1=SUBSTR( '一二三四五六七八九 ',VAL(vr0)+VAL(vr0)-1,2)
vr2= ' '
ELSE
vr1=IIF(LEFT(vr0,1)= '1 ', '十 ',IIF(LEFT(vr0,1)= '2 ', '二十 ', '三十 ')) &&首位只能是1或2或3
vr2=IIF(RIGHT(vr0,1)= '0 ', ' ',;
SUBSTR( '一二三四五六七八九 ',VAL(RIGHT(vr0,1))+VAL(RIGHT(vr0,1))-1,2))
ENDIF
vr=vr1+vr2 &&取得某日大写
riqidx=vn+ '年 '+vy+ '月 '+vr+ '日 ' &&取得年月日大写
ELSE &&若非日期型,也非日期时间型,则返回空值
riqidx= ' '
ENDIF

RETU riqidx


用法示例:
?riqidx(date()) &&显示“二○○七年六月十六日”

热点排行