我有 2 个日期,小时数如下:'2013-01-01 12:25:32' (yyyy-mm-dd hh:mm:ss) 我应该以分钟为单位找到 DateA 和 DateB 之间的差异。我怎样才能做到这一点?
谢谢
我有 2 个日期,小时数如下:'2013-01-01 12:25:32' (yyyy-mm-dd hh:mm:ss) 我应该以分钟为单位找到 DateA 和 DateB 之间的差异。我怎样才能做到这一点?
谢谢
只要日期或日期/时间格式相同,VFP 就可以轻松处理日期和日期时间数学。
如果数据类型是字符串格式与实际日期或日期/时间格式,Oleg 关于转换数据类型是正确的,但您显然可以使用 VFP。尝试其中一些以了解正在发生的事情。
如果两个字段都只是日期,则加法/减法基于 DAYS
ldStartDate = date( 2013, 12, 5 )
ldOtherDate = date( 2013, 11, 24 )
nDaysDiff = ldStartDate - ldOtherDate
结果是11天。
计算给定月份的第一天?
ldFirstOfMonth = ldStartDate - DAY( ldStartDate ) +1
因为示例 day() 将返回 5(12 月 5 日),所以 12 月 5 日 - 5 天 = 11 月的最后一天 +1 带回 12 月 1 日。
现在,使用日期/时间字段 - 日期/时间基于 SECONDS 差异
ldStartTime = DATETIME( 2013, 12, 5, 8, 56, 00 )
ldOtherTime = DATETIME( 2013, 11, 24, 12, 00, 00 )
nSecDiff = ldStartTime - ldOtherTime
? nSecDiff
result = 939360 seconds
? nSecDiff / 60
result = 15656 minutes
? nSecDiff / 60 / 60
result = 260.93 hours
? nSecDiff / 60 / 60 / 24
result is 10.87 days
哦...忘记了...如果处理日期/日期时间的数值,它们分别对应于日期(如在示例中计算一个月的第一天)和日期/时间字段的秒结果。
所以
? ldStartDate + 10
would result in Dec 5 + 10 days or Dec 15th
? ldStartDate - 3
would result in Dec 5 - 3 days or Dec 2nd
** from when ldStartTime initially set to Dec 5 at 8:56:00am
? ldStartTime + 20
would be Dec 5, 8:56:20am
? ldStartTime + (20*60)
would be Dec 5, 8:56:00am + 20 MINUTES = 9:16am
? ldStartTime + (1*60*60)
would be Dec 5, 8:56:00am + 1 HOUR = 9:56am
? ldStartTime + (1*60*60*24)
would be Dec 5, 8:56:00am + 1 DAT = Dec 6, 8:56am
您可以使用 CTOT() 函数,但由于您的字符串包含空格符号而不是 'T' 符号,因此应首先将其替换:
?CTOT(CHRTRAN('2013-01-01 12:25:35', ' ', 'T'))-CTOT(CHRTRAN('2013-01-01 12:25:32', ' ', 'T'))
结果将是 3。