Consider this scenario.
- the sc-data-age header contains the String "2023-11-09T15:52:20.203Z"
- the JVM timezone is "America/New_York"
- Meta.getDataAge() returns a java.util.Date object that is equivalent to the instant "2023-11-09 20:52:20.203Z"
So it's incorrect.
I note that if the JVM timezone is set to UTC, the parsing is correct. However, it's not reasonable to assume the user's JVM has to be set to UTC.
This problem could be addressed in different ways; I think using java.time classes would be best.