For a long time, we have been plagued by times in InfoPath forms jumping forward by an hour during daylight saving time after amending the metadata fields.
Investigation shows that the datetime value written back to the form contains a modifier telling SharePoint that the time is recorded as being GMT (and thus an hour needs to be added to make it ‘correct’ again).
Date field in InfoPath form
The solution was to use Nintex to create a workflow that rewrites the date fields after change to remove the ‘Z’ character.
The workflow could either run on any change – or fine tune it to run only when one of the affected fields change value
The action is to
- Retrieve the field value from the xml document
- Test if it contains a ‘Z’
- If it does, write it back without the ‘Z’
As it runs immediately after a change, it is worth starting the workflow with a ‘Commit pending changes’
The first step is to read the xml document associated with the current item, so insert a Query XML task – ensure the source is the Current Item; return the result as Text, to a temporary string variable
In the Output, set ‘Process using’ to XPath and click the XPath Builder button and navigate through your form’s xml to the field
When you reach it, select it and click the Apply button and something like this will be returned
Now test strTest in a Run If
Within the Run If, add an Update XML task
You can copy/paste the field reference from the Query XML task
You then replace the node content with the item value for the field, replacing the ‘Z’ with a blank
Note that the FormatDate function returns the date/time in the same format as that stored within the xml.
Now repeat this for each affected field.