Well, what are you going to do next?
EDIT - what is it you are trying to achieve?
Here’s how it works (OH2.4)
Example Items
DateTime testDate1 "my datetime1 [%1$tR]"
DateTime testDate2 "my datetime2 [%1$tR]"
DateTime testDate3 "my datetime3 [%1$tR]"
Example rule, ISO strings to DateTime Items
testDate1.postUpdate("2019-10-09T12:24:36.000Z")
Thread::sleep(500)
testDate2.postUpdate("2019-10-09T12:24:36.000")
Thread::sleep(500)
testDate3.postUpdate("2019-10-09T12:24:36.000+0300")
events log
2019-10-14 22:26:12.957 [vent.ItemStateChangedEvent] - testDate1 changed from NULL to 2019-10-09T12:24:36.000+0000
2019-10-14 22:26:13.440 [vent.ItemStateChangedEvent] - testDate2 changed from NULL to 2019-10-09T12:24:36.000+0100
2019-10-14 22:26:13.939 [vent.ItemStateChangedEvent] - testDate3 changed from NULL to 2019-10-09T12:24:36.000+0300
So, the given ISO date string is stored together with whatever timezone we give.
But - it does not adjust the stored time with that timezone as it is parsed.
Z means “zero”, UTC (Item 1)
My timezone is currently +0100, and given no timezone in the input string it defaults to this (Item 2).
If a timezone is specified, that gets stored (Item 3)
Displaying these Items on a sitemap gives them ALL as 12:24, that is to say the timezone is not taken into account by the display format.
But - bear in mind this in OH2.4
There has been changes since then
So far as I can tell, that change means that the sitemap display of a DateTime WILL now take the stored timezone into account.
So, what should you do? Depends what you want.
I will guess that -
a) You are getting a datetime via Modbus with NO timezone info
b) You would like to store this as though it were in the same timezone as your openHAB system.
This should be simple enough - get your javascript to return an ISO date string WITHOUT the Z on the end.