Hello, could anyone help me to develop a constraint for a time spinner input variable? Our survey runs in particular timings 8am-2pm and surveyors have to rotate spinner to input the start time for their observation. To avoid errors in data entry, I want to limit the integers available in AM and PM slots - meaning, digits beyond 2pm and before 8am should not be available in hours slot.

Time select between 8am-2pm otherwise give error

Hello @azamiqual,

Maybe the following can help you to define a constraint

https://getodk.github.io/xforms-spec/#fn:decimal-time.

Hint. You depend on correct time configuration of the enumerator device. With a wrong/fake device time your constraint might be passed.

1 Like

@azamiqbal, you could follow the image below to understand on what @wroos has tried to show.

#### In the survey tab of your XLSForm:

#### Data entry screen as seen in Enketo:

#### Data entry screen as seen in Enketo:

#### Data entry screen as seen in Enketo:

#### Data entry screen as seen in Enketo:

#### Reference XLSForm:

TIME.xlsx (9.9 KB)

All you need to calculate here is the `decimal-time`

. For this you could do as follows:

- First, you will need to convert the time to 24 hours. This will be easy for the calculations.
- Second, you will need to get the decimal value of 8 AM. You can do this by dividing as follows: 8 div 24. So, 8 AM in decimal value is
**0.333**. Similarly, you will also need to get the decimal value of 2 PM. So 2 PM in 24 hours should be 14 hours. You can get the decimal value of 14 hours by dividing as follows: 14 div 24. So, 2 PM (or 14 hours) in decimal value is**0.583**. As you want to constraint till 2 PM you can use the decimal value of**0.584**.

The rest if the use of `if-statement`

, `note`

and `relevant`

to make it a constraint.

Thank you once again @wroos for sharing this with the community Expecting the same in the upcoming days too