Recently I as looking for a way to calculate the current time in InfoPath to be used in the default value field or the validation, I’ve been googling alot but I couldn’t find a solution untill I got it working!
The senario I will be explaining here is I need a field to enter a time, and I want to validate that the time entered should be at least after 1 hour of the current time.
The concept is to get the current time, then add 3600 (60 sec X 60 min) second to it, so the time entered by the user should be Less Than the current time added 3600 seconds (1hour).
The steps goes:
1- In InfoPath, add a Text Box.
2- Open the Text Box Properties window.
3- Change the Data Type to “Time”.
4- Click on the Format button to chage the Time Format to “9:46 AM”.
5- Click OK once, then click on Data Validation button.
6- Then click on Add button in Data validation screen.
7- Choose (is less than), and choose (Use a formula) from the drop down box, to create the formula.
8- Then Insert Formula dialog box will appear.
9- Then click on Insert Function button, the Insert function dialog box will appear.
10- Chose Date and Time, and chose “addSeconds” Function, and click OK button.
11- Then you need to change the formaula as follows:
12- The Formual is: addSeconds(substring-after(now(), “T”), 3600)
This formual will take the time part of NOW() function, then it will add 1 hour (60 sec X 60 min), so the validation will be:
If the field entered is Less Than the Current time + 1 hour, then it will pop up an error, the time should be at least after 1 hour of the current time.
13- Click on OK button, then type the Screen Tip, Message and check the Show dialog box messages …
14- Click on OK button 3 times.
15- Preview the form, and try to type a time after 30 min after your PC current time, it will give you the error as follows: