CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  DataWindow

如何得到两个datetime数值间的小时和分钟数(pb实现)

楼主tongyi226()2005-04-04 12:45:16 在 PowerBuilder / DataWindow 提问

假设:2005-05-05   12:25:35       和   2005-05-06   3:26:35间隔了多少个小时多少分钟?  
  因为要在数据窗口中实现自动计算并添加时间差值,所以不能用sql语句实现。 问题点数:50、回复次数:7Top

1 楼sywen(古道西风)回复于 2005-04-04 13:24:15 得分 0

SecondsAfter   (   time1,   time2   )  
  或者用數據庫提供的相應的sql函數!Top

2 楼946(情系会计)回复于 2005-04-04 13:26:22 得分 0

global   type   of_relativedatetime   from   function_object  
  end   type  
   
  forward   prototypes  
  global   function   datetime   of_relativedatetime   (datetime   adt_start,   decimal   adc_hour)  
  end   prototypes  
   
  global   function   datetime   of_relativedatetime   (datetime   adt_start,   decimal   adc_hour);datetime   ldt_ret  
  long   ll_second_add,   ll_second,   ll_minute,   ll_hour,   ll_total_sec,   ll_date_add,   ll_mid1,   ll_mid2  
  time   lt_time  
  date   ld_date  
   
  ll_second_add   =   long(adc_hour   *   3600)  
   
  lt_time   =   time(adt_start)  
  ld_date   =   date(adt_start)  
   
  ll_second   =   second(lt_time)  
  ll_minute   =   minute(lt_time)  
  ll_hour   =   hour(lt_time)  
   
  ll_total_sec   =   ll_hour   *   3600   +   ll_minute   *   60   +   ll_second   +   ll_second_add  
   
  ll_date_add   =   long(ll_total_sec   /   (24*3600))  
   
  ll_mid1   =   mod(ll_total_sec,   24   *   3600)  
  ll_hour   =   long(   ll_mid1   /   3600)  
  ll_mid2   =   mod(ll_mid1,   3600)  
  ll_minute   =   long(ll_mid2   /   60)  
  ll_second   =   mod(ll_mid2,60)  
   
  lt_time   =   time(string(ll_hour,'00#')   +   ":"   +   &  
  string(ll_minute,"00#")   +   ":"   +   &  
  string(ll_second,"00#"))  
   
  ld_date   =   relativedate(ld_date,   ll_date_add)  
   
  ldt_ret   =   datetime(ld_date,   lt_time)  
   
  return   ldt_ret  
  end   function  
   
  Top

3 楼lzheng2001(1加1)回复于 2005-04-04 13:31:49 得分 20

pb中会要把datetime拆分成两份进行运算  
  date   d_1  
  time   t_1  
  d_1   =   date(dt)  
  t_1   =   time(t_1)  
  //以上拆分成两部分保存在两个变量中  
  DaysAfter()求两个日期间的日数差  
  SecondsAfter求两个时间的秒数差  
   
  总秒数差   =   日数   *   3600   *   24   +   秒数差  
   
  然后你就可以转成分钟了  
   
  Top

4 楼nimittz(尼米兹---------努力升星GOGOGO)回复于 2005-04-04 13:34:37 得分 30

没有直接的pb函数,你必须自己写,用DaysAfter   和   SecondsAfter合起来写   daysafter(date(a1),date(a2))*86400   +   SecondsAfter   (   time(a1),   time(a2)   ),a1   a2就是你要求差的两个datetime型变量  
   
  Top

5 楼lzheng2001(1加1)回复于 2005-04-04 13:34:42 得分 0

改一下    
  t_1   =   time(dt)  
  Top

6 楼hornbilltofy()回复于 2005-04-04 13:49:33 得分 0

用pb来实现有点麻烦,实际上完全可以通过sql语句来轻松实现,并且也可以在数据窗中使用,方法是你利用sql去编一个function,然后在数据窗中直接调用这个function就可以啦!Top

7 楼yhmodem(潇洒的瓢儿白)回复于 2005-04-04 20:49:29 得分 0

我剛好在寫一個刷卡考勤模塊.就有這樣的問題.如果你只要求到分鍾的話.大可不必記算到秒.只需要  
  首先判斷兩個日期是不是當天.如果不是就將第二天的時間加上2400.  
  然後你就可以用第二天的時間減去第一天的時間就可以算出相差多少小時多少分鍾了.Top

相关问题

  • 在.net中如何实现数值框?
  • 如何实现计算文本里的数值
  • 急,求一个小数的对数值怎么实现。
  • 如何查询pb中颜色与数值的对应关系?
  • 如何使DW中的某个列单元实现数值的自动计算?
  • 要实现输入数值后(例如100.00)转成大写(壹佰)
  • 要实现输入数值后(例如100.00)转成大写(壹佰)
  • EXCEL里怎么实现加总当前单元格以上数值?
  • 能不能实现在select部分根据参数值来选择字段?
  • 如何实现在相同的位置输出不断变化的数值?

关键词

  • sec
  • date
  • start
  • ll
  • relativedatetime
  • datetime
  • hour
  • mid
  • adt
  • lt

得分解答快速导航

  • 帖主:tongyi226
  • lzheng2001
  • nimittz

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo