3 Replies Latest reply on May 17, 2013 7:13 AM by philmodjunk

    Setting a field to the nearest 15min

    NathanVeitch

      Title

      Setting a field to the nearest 15min

      Post

           Hi There,

            

           I need to find out what would be the best method for calculating a field to the nearest 15min. Im working on a clock in system. I was thinking of having a button that the user presses and it can get current time. That is the easy part. What I would like to be able to do is convert that time down to the nearest 15min. So if they press the button at 7:10 the time captured would be 7:00. 

            

           Would I need to use a case statement  along the lines? I have an idea that the logic behind the case would be something along the lines of,

           Case(

           Min(Time) < 15; Min(Time) = 00;

           Min(Time) < 30; Min(Time) = 15;

           Min(Time) < 45; Min(Time) = 30;

           Min(Time) = 45

           )

           I tried this calculation but it doesn't quite work :$

        • 1. Re: Setting a field to the nearest 15min
          JohnEriksson

               $time=Get(CurrentTime)

               Case(

                 min($time) < 15 ; $closest15 = 0;

                15 < min($time) < 30 ; $closest15 = 15;

               )

               $time to save = time(hour($time) ; $closest15 ; 0)

               This will work as script steps, but can redone to a calculation with the Let function. And of course you need all four minutes, this was just to give you the idea not do the work for you. ;)

          • 2. Re: Setting a field to the nearest 15min
            NathanVeitch

                 Thank-you for the help. I want to get it working in a calculation field for time in and out but I have trouble with the Let funciton. For the TimeIn field, on the layout it is set to get(currenttime) when pressed, then I was thinking of making TimeIn a calculation field. Where am I going wrong in the calculation: 

                  

                 Let(
                 [
                 $Time = get(currenttime);
                 $closest = 0;
                 ]
                 Case(
                  
                 Minute($Time) < 15; $closest= 0;
                  
                 15 ≤ Minute($Time) < 30; $closest = 15;
                  
                 30 ≤ Minute($Time) < 45; $closest= 30;
                  
                 $closest = 45
                  
                 )
                  
                 TimeIn = time($time;$closest;0)
                 )
            • 3. Re: Setting a field to the nearest 15min
              philmodjunk

                   I suggest searching the Knowledge Base (see link at top of page). There's an article in there somewheres that documents a calculation for rounding to the nearest 15 minutes in an elapsed time calculation.

                   If you use a calculation field to capture the current time, make it unstored and do not try to set up a field of type time with an auto-enter calc to do it.