作者在 2006-06-27 03:07:00 发布以下内容
*FUNCTION CDTOCD
***
*** 日期转换为大写的自定义函数 CDTOCD
***
*** 语法 CDTOCD(cDate1,nMonth,nDay)
***
*** 输入参数cDate1
*** (1)字符型,1个参数或多个参数,只有第1个参数有效
*** 14个字符,格式是“YYYY年MM月DD日”或者“YYYY..MM..DD..”(".."可以是任何无关字符)
*** 10个字符,格式是“YYYY.MM.DD”(.也可以是任何无关字符)
*** 8个字符,格式是“YYYYMMDD”
*** (2)日期型,1个参数或多个参数,只有第1个参数有效
*** 任何格式,只要是日期型就可以
*** (3)日期时间型,1个参数或多个参数,只有第1个参数有效
*** 日期时间型
*** (4)数值型,1个参数
*** 格式"YYYYMMDD",8位整数
*** (5)数值型,3个参数都是数值型
*** 格式CDTOCD(YYYY,MM,DD),3个整数
***
*** 输出结果
*** 字符型
***
*** 特别说明
*** 如果输入参数不是字符型,不是日期型,不是日期时间型,也不是数值型,则返回14个星号(*);
*** 如果输入参数是字符型,但没有按规定的格式输入,比如年份写在后面等,返回的结果可能不正确
***
*** 用法: ?CDTOCD("2006年06月25日") &&结果为“贰零零陆年零陆月贰拾伍日”
*** ?CDTOCD("2006.06.25")
*** ?CDTOCD("20060625")
*** ?CDTOCD(DATE()) &&显示系统日期的大写方式
*** ?CDTOCD(DATETIME())
*** ?CDTOCD(DTOC(DATE(),1))
*** ?CDTOCD(20060625) &&显示“贰零零陆年零陆月贰拾伍日”
*** ?CDTOCD(2006,6,25) &&显示“贰零零陆年零陆月贰拾伍日”
***
PARAMETERS cDate1,nMonth,nDay
PRIVATE cString1,cString2,nYear,nMonth,nDay,I,cDate1
cString1="0123456789"
cString2="零壹贰叁肆伍陆柒捌玖"
* 提取年、月、日信息
DO CASE
CASE TYPE("cDate1")=CHR(67) AND LEN(cDate1)=14 &&第1个参数是字符型C,14个字符
nYear=VAL(SUBSTR(cDate1,1,4))
nMonth=VAL(SUBSTR(cDate1,7,2))
nDay=VAL(SUBSTR(cDate1,11,2))
CASE TYPE("cDate1")=CHR(67) AND LEN(cDate1)=10 &&第1个参数是字符型C,10个字符
nYear=VAL(SUBSTR(cDate1,1,4))
nMonth=VAL(SUBSTR(cDate1,6,2))
nDay=VAL(SUBSTR(cDate1,9,2))
CASE TYPE("cDate1")=CHR(67) AND LEN(cDate1)=8 &&第1个参数是字符型C,8个字符
nYear=VAL(SUBSTR(cDate1,1,4))
nMonth=VAL(SUBSTR(cDate1,5,2))
nDay=VAL(SUBSTR(cDate1,7,2))
CASE TYPE("cDate1")=CHR(68) OR TYPE("cDate1")=CHR(84) &&第1个参数是日期型D或日期时间型T
nYear=YEAR(cDate1)
nMonth=MONTH(cDate1)
nDay=DAY(cDate1)
CASE TYPE("cDate1")=CHR(78) AND (TYPE("nMonth")#CHR(78) OR TYPE("nDay")#CHR(78)) &&第1个参数为数值型N,第2、第3个参数不完全是数值型
nYear=VAL(SUBSTR(PADL(cDate1,8,"0"),1,4))
nMonth=VAL(SUBSTR(PADL(cDate1,8,"0"),5,2))
nDay=VAL(SUBSTR(PADL(cDate1,8,"0"),7,2))
CASE TYPE("cDate1")=CHR(78) AND TYPE("nMonth")=CHR(78) AND TYPE("nDay")=CHR(78) &&3个参数都是数值型N,分别表示年、月、日
nYear=cDate1 &&提取年份信息
IF nY
***
*** 日期转换为大写的自定义函数 CDTOCD
***
*** 语法 CDTOCD(cDate1,nMonth,nDay)
***
*** 输入参数cDate1
*** (1)字符型,1个参数或多个参数,只有第1个参数有效
*** 14个字符,格式是“YYYY年MM月DD日”或者“YYYY..MM..DD..”(".."可以是任何无关字符)
*** 10个字符,格式是“YYYY.MM.DD”(.也可以是任何无关字符)
*** 8个字符,格式是“YYYYMMDD”
*** (2)日期型,1个参数或多个参数,只有第1个参数有效
*** 任何格式,只要是日期型就可以
*** (3)日期时间型,1个参数或多个参数,只有第1个参数有效
*** 日期时间型
*** (4)数值型,1个参数
*** 格式"YYYYMMDD",8位整数
*** (5)数值型,3个参数都是数值型
*** 格式CDTOCD(YYYY,MM,DD),3个整数
***
*** 输出结果
*** 字符型
***
*** 特别说明
*** 如果输入参数不是字符型,不是日期型,不是日期时间型,也不是数值型,则返回14个星号(*);
*** 如果输入参数是字符型,但没有按规定的格式输入,比如年份写在后面等,返回的结果可能不正确
***
*** 用法: ?CDTOCD("2006年06月25日") &&结果为“贰零零陆年零陆月贰拾伍日”
*** ?CDTOCD("2006.06.25")
*** ?CDTOCD("20060625")
*** ?CDTOCD(DATE()) &&显示系统日期的大写方式
*** ?CDTOCD(DATETIME())
*** ?CDTOCD(DTOC(DATE(),1))
*** ?CDTOCD(20060625) &&显示“贰零零陆年零陆月贰拾伍日”
*** ?CDTOCD(2006,6,25) &&显示“贰零零陆年零陆月贰拾伍日”
***
PARAMETERS cDate1,nMonth,nDay
PRIVATE cString1,cString2,nYear,nMonth,nDay,I,cDate1
cString1="0123456789"
cString2="零壹贰叁肆伍陆柒捌玖"
* 提取年、月、日信息
DO CASE
CASE TYPE("cDate1")=CHR(67) AND LEN(cDate1)=14 &&第1个参数是字符型C,14个字符
nYear=VAL(SUBSTR(cDate1,1,4))
nMonth=VAL(SUBSTR(cDate1,7,2))
nDay=VAL(SUBSTR(cDate1,11,2))
CASE TYPE("cDate1")=CHR(67) AND LEN(cDate1)=10 &&第1个参数是字符型C,10个字符
nYear=VAL(SUBSTR(cDate1,1,4))
nMonth=VAL(SUBSTR(cDate1,6,2))
nDay=VAL(SUBSTR(cDate1,9,2))
CASE TYPE("cDate1")=CHR(67) AND LEN(cDate1)=8 &&第1个参数是字符型C,8个字符
nYear=VAL(SUBSTR(cDate1,1,4))
nMonth=VAL(SUBSTR(cDate1,5,2))
nDay=VAL(SUBSTR(cDate1,7,2))
CASE TYPE("cDate1")=CHR(68) OR TYPE("cDate1")=CHR(84) &&第1个参数是日期型D或日期时间型T
nYear=YEAR(cDate1)
nMonth=MONTH(cDate1)
nDay=DAY(cDate1)
CASE TYPE("cDate1")=CHR(78) AND (TYPE("nMonth")#CHR(78) OR TYPE("nDay")#CHR(78)) &&第1个参数为数值型N,第2、第3个参数不完全是数值型
nYear=VAL(SUBSTR(PADL(cDate1,8,"0"),1,4))
nMonth=VAL(SUBSTR(PADL(cDate1,8,"0"),5,2))
nDay=VAL(SUBSTR(PADL(cDate1,8,"0"),7,2))
CASE TYPE("cDate1")=CHR(78) AND TYPE("nMonth")=CHR(78) AND TYPE("nDay")=CHR(78) &&3个参数都是数值型N,分别表示年、月、日
nYear=cDate1 &&提取年份信息
IF nY