This was my misunderstanding of how timezone works - and on further digging I am probably more confused.
What I believe should be happening is:
The secondsSince1970 should be a number representing the delta in seconds between 00:00:00 UTC on 1 January 2001 or some other specified date (presumably 1 January 1970, 00:00 GMT in Xojo’s case). Thus regardless of where date was created, or the date is read, this number should be constant/immutable/invariant (depending on your preferred nomenclature).
Based on that number, a little division, some poems about leap years and days of the month, and application of the timezone delta and the daylightSavings delta you end up with a presentation of local time in all the day, month, sql etc properties.
You can see the impact of the latter by changing the timezone in System Preferences and see the resultant created dates in Finder get changed to the equivalent local time.
If the above holds true then it is relatively easy to convert the dateTime into any timezone required. All good so far.
But, not all cameras do this - most will simply allow setting of a datetime without knowledge of the timezone, some will include the timezone (within EXIF data), some might use GPS data. So my app (which is trying to file photos in a consistent date structure) will need to have knowledge (manually or automatically) of the timezone in which the file was created - and then adjusting the to the desired timezone for the archive. Lumix, for example, allows setting of a home timezone and a destination timezone, setting the camera’s time to whichever is wanted. The challenge here is that the createdDate timestamp seems to be the camera’s time, rather than by reference to UTC or GMT, though the EXIF date does include the associated timezone data.
So, I would have expected that in specifying a timezone for a new DateTime, that this timezone would be used to calculate the constant/immudable/invariant secondsSince1970, and further, that this value be used when applying the date to the files createdDate - but it seems it is not.
But, double but, when I check the secondsSince1970 value, I see that this constant/immutable/invariant value is also changing when I adjust the System Preferences timezone. Which knocks all my above theorising on the head…
If I had some more Swift knowledge I would probably test it there to see if it does the same thing as Xojo.