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

[急!][计算与推算上班时间][高手快来][体谅一下分不多]

楼主away5678(超人Advance)2004-12-03 23:24:37 在 Java / J2SE / 基础类 提问

要求用最简单的方法计算与推算上班时间,做一个类.  
  例如:  
  现在是2004/12/3   8:30   正常上班时间为8:30~17:00  
  我加上10个小时,理论上是2004/12/3   18:30  
  但由于18:30已超过了下班时间,所以结果为  
  2004/12/4   10:00   并且要求忽略星期日和一些大假期..  
   
  由于本人分不多(已经用光光了),所以体谅一下了.  
   
  谢谢.  
   
  问题点数:0、回复次数:6Top

1 楼volkia(MonkeyKing)回复于 2004-12-04 00:32:37 得分 0

先做些假设:  
  beginTime   上班开始时间(8:30)  
  endTime       下班时间(17:00)  
   
  nowTime(.date+.time)       现在的时间   2004/12/3(.date)   18:30(.time)  
   
  计算方法:  
   
  if   (nowTime.time>endTime)  
        return   nowTime;  
  else  
  {  
         
          int   t=(int)((nowTime.Time-startTime)/(endTime-startTime));       //看看过了多少个上班周期  
          nowTime.date+=t;  
          nowTime.time=startTime+(nowTime.Time-t*(endTime-startTime));     //多出了的时间  
          return   nowTime;  
  }Top

2 楼volkia(MonkeyKing)回复于 2004-12-04 00:33:30 得分 0

哦,错了,上面的beginTime和startTime是同一个东东,写错了哈     :)Top

3 楼away5678(超人Advance)回复于 2004-12-04 22:43:25 得分 0

可不可以详细点啊???Top

4 楼volkia(MonkeyKing)回复于 2004-12-05 00:31:59 得分 0

/*   2004-12-5  
    *   @author   MKing  
    *  
    *   WorkOnOffTest  
    *    
    */  
  public   class   WorkOnOffTest     //   主类  
  {  
  public   static   void   main(String[]   args)  
  {  
  MyWork   obj=new   MyWork(5,8.50);     //当前日期,5号的8:30  
  System.out.println("Before   format:"+obj.toString());  
  double   xx=23.40;                                 //23小时24分之后的时间  
  System.out.println("After   "+(int)xx+":"+(int)((xx-(int)xx)*60));  
  if   (obj.formTime(xx))  
  {  
  System.out.println("After   format:"+obj.toString());  
  }  
  else  
  {  
  System.out.println("Error!");  
  }  
  }  
  }  
   
  class   MyWork         //功能类  
  {  
  private   static   double   beginTime;       //上班时间  
  private   static   double   endTime;         //下班时间  
   
  private   int   today;                                   //号数  
  private   double   nowTime;                         //时间  
   
  public   MyWork()                                         //默认为上班为8:30,下班为17:00  
  {  
  beginTime=8.5;  
  endTime=17.0;  
  }  
   
  public   MyWork(int   t,double   n)             //当前号数与时间  
  {  
  this();  
  today=t;  
  nowTime=n;  
  }  
   
  public   boolean   formTime(double   diff)           //格式化当前时间后的diff个小时  
  {  
  if   (diff<0||nowTime<beginTime)  
  {  
  return   false;  
  }  
  nowTime+=diff;  
  double   t=endTime-beginTime;                     //上班周期  
  int   x=(int)((nowTime-beginTime)/t);                   //从8:30开始以后,包含的上班周期数  
  today+=x;                                                                       //即天数  
  nowTime=beginTime+(nowTime-beginTime-t*x);     //余下的时间,等价于   nowTime-=t*x;  
  return   true;  
  }  
   
  public   String   toString()                                     //格式化输出结果  
  {  
  String   s="";  
  s="Date:"+today+"\t   Time:"+(int)nowTime;  
  double   y=nowTime-(int)nowTime;  
  s+=":"+(int)(y*60);  
  return   s;  
  }  
  }Top

5 楼redex(cc)回复于 2004-12-05 01:35:14 得分 0

up并mark.Top

6 楼away5678(超人Advance)回复于 2004-12-06 09:34:20 得分 0

谢谢。。  
  先研究一下。。  
   
  ^_^Top

相关问题

  • 日期计算
  • 计算问题.
  • 计算问题?
  • 如何计算?
  • 计算问题
  • 和值计算
  • 金钱计算
  • 计算月份
  • 计算机
  • 日期计算。。。

关键词

  • date
  • nowtime
  • 上班
  • starttime
  • endtime
  • 时间
  • time

得分解答快速导航

  • 帖主:away5678

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

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