如何得到n小时之后的datetime

yuhuazhong 2005-11-03 12:10:12
想得到n小时之后的datetime,谁有函数?
...全文
265 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
K1933 2006-02-27
  • 打赏
  • 举报
回复
PB的时间运算函数太少了,还不如用SQL的,
SELECT DATEADD(HH,小时,日期)
sharelove 2006-02-27
  • 打赏
  • 举报
回复
timeafter()
jackiecheng001 2005-11-24
  • 打赏
  • 举报
回复
relative(time,n,"2005/01/01 00:00:00")
n 可以为正负的
wscft 2005-11-08
  • 打赏
  • 举报
回复
支持楼上的
hlp912 2005-11-08
  • 打赏
  • 举报
回复
RelativeTime ( time, n )
yuhuazhong 2005-11-03
  • 打赏
  • 举报
回复
relativedate 是 datetime类型的
不好使啊!:(
lmby 2005-11-03
  • 打赏
  • 举报
回复
relativedate()
一手软一手硬 2005-11-03
  • 打赏
  • 举报
回复
用上面的函数计算的结果似乎不对
yuhuazhong 2005-11-03
  • 打赏
  • 举报
回复
ok
huangxinru 2005-11-03
  • 打赏
  • 举报
回复
pfc中有现成的函数如下

//////////////////////////////////////////////////////////////////////////////
//
// Function: of_RelativeDatetime
//
// Access: public
//
// Arguments:
// adtm_start Starting datetime point of calculation.
// al_offset Number of seconds before/after datetime to be returned.
//
// Returns: Datetime
// Relative datetime.
// If any argument's value is NULL, function returns NULL.
// If any argument's value is Invalid, function returns 1900-01-01.
//
// Description: Given a datetime, find the relative datetime +/- n seconds
//
//////////////////////////////////////////////////////////////////////////////
//
// Revision History
//
// Version
// 5.0 Initial version
// 5.0.03 Fix to return time as 00:00:00:000000 on invalid date check
//
//////////////////////////////////////////////////////////////////////////////
//
// Copyright ?1996-1997 Sybase, Inc. and its subsidiaries. All rights reserved.
// Any distribution of the PowerBuilder Foundation Classes (PFC)
// source code by other than Sybase, Inc. and its subsidiaries is prohibited.
//
//////////////////////////////////////////////////////////////////////////////

datetime ldt_null
date ld_sdate
time lt_stime
long ll_date_adjust
long ll_time_adjust, ll_time_test

//Check parameters
If IsNull(adtm_start) or IsNull(al_offset) Then
SetNull(ldt_null)
Return ldt_null
End If

//Check for invalid date
If Not of_IsValid(adtm_start) Then
Return ldt_null
End If

//Initialize date and time portion
ld_sdate = date(adtm_start)
lt_stime = time(adtm_start)

//Find out how many days are contained
//Note: 86400 is # of seconds in a day
ll_date_adjust = al_offset / 86400
ll_time_adjust = mod(al_offset, 86400)

//Adjust date portion
ld_sdate = RelativeDate(ld_sdate, ll_date_adjust)

//Adjust time portion
// Allow for time adjustments periods crossing over days
// Check for time rolling forwards a day
If ll_time_adjust > 0 then
ll_time_test = SecondsAfter(lt_stime,time('23:59:59'))
If ll_time_test < ll_time_adjust Then
ld_sdate = RelativeDate(ld_sdate,1)
ll_time_adjust = ll_time_adjust - ll_time_test -1
lt_stime = time('00:00:00')
End If
lt_stime = RelativeTime(lt_stime, ll_time_adjust)
//Check for time rolling backwards a day
ElseIf ll_time_adjust < 0 then
ll_time_test = SecondsAfter(lt_stime,time('00:00:00'))
If ll_time_test > ll_time_adjust Then
ld_sdate = RelativeDate(ld_sdate,-1)
ll_time_adjust = ll_time_adjust - ll_time_test +1
lt_stime = time('23:59:59')
End If
lt_stime = RelativeTime(lt_stime, ll_time_adjust)
End If

return(datetime(ld_sdate,lt_stime))
huangxinru 2005-11-03
  • 打赏
  • 举报
回复
RelativeTime ( time, n )

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧