嗨,我是vfp编程新手
我有这样的剧本
date1 = this.value
date2 = thisform.pgfpagerefresh1.page2.txtpdbound8.value
我认为它已经采用日期时间格式
因为wait wind
没有wait wind dtoc(date1)
而不能countDays = date11 - date2 -> fail
countDays = ROUND((date1-date2)/(3600*24),0) -> fail
date1或date2
但不知怎的,我不能在上面的两个var日期之间得到天数
date1 = TRANSFORM(DTOS(this.value),"@R 9999-99-99")
date2 = TRANSFORM(DTOS(thisform.pgfpagerefresh1.page2.txtpdbound8.value),"@R 9999-99-99")
我已经尝试使用
转换为字符串countDays = date(2016,10,18) - date(2016,10,12)
然后使用ctod使其恢复日期格式,但没有任何工作
我尝试像这样手动使用静态变量,成功获得数天
date1
如何转换我的var date2
& 107/operator/operand type mismatch
如上所述
@upddate
countDays = date1 - date2 Pattern pat1 = Pattern.compile("\\((.*)\\,");
Matcher mat1 = pat1.matcher(str);
答案 0 :(得分:1)
这是有效的,无论值是日期,日期时间还是可转换为日期或日期时间的字符串值:
date1 = this.value
date2 = thisform.pgfpagerefresh1.page2.txtpdbound8.value
Local dDate1, dDate2, nDays
dDate1 = Cast(Cast(m.date1 as datetime) as date)
dDate2 = Cast(Cast(m.date2 as datetime) as date)
nDays = Abs(m.dDate2-m.dDate1)
? m.nDays
注意:如果是字符串,则可转换性取决于当前日期格式。即:如果设定日期为dmy,则“31/1/2016”将被转换,但不是“1/31/2016”。
答案 1 :(得分:1)
您可以使用TTOD()将DateTime转换为日期,然后简单的减法将适合您。
d1 = DATETIME(2016, 8, 18, 14, 0, 0)
d2 = DATETIME(2016, 8, 15, 10, 30, 0)
? TTOD(d1) - TTOD(d2)
3