How can I get the abbreviated timezone given a date/time value and a location name, for exemple (as of this writing):
"Now" and "Europe/London" yielding "BST"?
You can use one of the class methods such as GMTToLocalTime for that.
var
Abbreviation: String
...
PTZ:= TPascalTZ.Create;
...
PTZ.GMTToLocalTime(NowUTC, 'Europe/London', Abbreviation);
WriteLn('Timezone abbreviation for current DST : ', Abreviation);
..
PTZ.Free;
...
Do note however that this requires function nowutc() (from lazsysutils) and not function now(). As written in the FPC documentation, using timezone related functions from Pascal itself are marked as not being trustworthy (as it goes beyond the scope to interpret/support timezones/DST's correctly, hence the existence of units like PascalTZ).
However, if you know the name of your own timezone then you can convert your local now() time to another local time using class method TimeZoneToTimeZone().
edit: I forgot to add that IANA itself is very strict with regards to use of the abbreviations and as such you won't be able to find many/all of them because there is a lot of ambiguity there.