Add decimal to time variable

MagnoMagno Member Posts: 168
edited 2005-01-10 in Navision Attain
Hi,

I have a decimal value that hold a duration like:
1h 30 min = 1.30
50 minutes = 0.50

I also have a time variable, now, i want the duration added to the time variable, how can i do that?
There are no bugs, only random undocumented features...
---
My Blog: http://NAV-Magno.be

Comments

  • MagnoMagno Member Posts: 168
    i think this could work:
    if xrec."Duration (h,m)" <> rec."Duration (h,m)" then begin
      iHourinMS := ROUND(rec."Duration (h,m)",1,'<');
      iMininMS := (rec."Duration (h,m)"*100) - iHourinMS;
      iHourinMS *= 3600000;
      iMininMS *= 60000;
      dt := CREATEDATETIME(ldatNewDate,ltimNewTime);
      dt += iHourinMS + iMininMS;
      iHourinMS := ROUND(xrec."Duration (h,m)",1,'<');
      iMininMS := (xrec."Duration (h,m)"*100) - iHourinMS;
      iHourinMS *= 3600000;
      iMininMS *= 60000;
      dt -= iHourinMS - iMininMS;
      ltimNewTime := DT2TIME(dt);
      ldatNewDate := DT2DATE(dt);
    end;
    

    i'm going to test it now
    There are no bugs, only random undocumented features...
    ---
    My Blog: http://NAV-Magno.be
  • ArhontisArhontis Member Posts: 667
    I have used the following command with the Hours variable to be a Decimal like 1.5 hours and it worked... (varTime is a Time var)
    varTime := varTime + ROUND(Hours * 60 * 60 * 1000,1);
    
  • RobertMoRobertMo Member Posts: 484
    But as I understood 1.5 means 1h50min, and not 1h30min
    So you should multiply the decimal part only with a factor 10/6.

    So it should look like:
    varTime := varTime + ROUND((ROUND(Hours,1,'<') + (Hours - ROUND(Hours,1,'<'))*10/6) * 60 * 60 * 1000,1);
    
               ®obi           
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  • MagnoMagno Member Posts: 168
    thx all
    There are no bugs, only random undocumented features...
    ---
    My Blog: http://NAV-Magno.be
Sign In or Register to comment.