Hi Aaron
We don't really do this right, but for legacy reasons there is no way we could ever change it because of the potential number of sites that might be affected.
When you enter a date and time in a Types date field we convert it to a UNIX timestamp. UNIX timestamps are, by definition, UTC (aka GMT).
To do that right means that, for a site which is based in US EST for example, you would first adjust for the time difference between EST and GMT, and then convert to a UTC timestamp.
To display date/times you would do the reverse.
However, we don't do that, we omit converting from EST to GMT, we convert straight to a timestamp without adjusting the timezone first, and when displaying such a field we likewise just go straight from UTC timestamp to a formatted time and date, ignoring the timezone difference.
So, the time and date that are displayed in the field on backend post edit screens or when outputting the field with shortcodes are always based on the local settings for the site (per its timezone settings).
How deep you need to go in terms of providing local times based upon the user's own timezone settings depends on whether you actually need to modify how the dates are stored in the database and displayed on the post edit screen, or whether you only really need to concern yourself with how dates are displayed when shown on the front-end via a template, for example.
The latter can be fixed fairly simply using a custom shortcode, bearing in mind how the dates are stored as I described above.
It's not just us. I happened to notice earlier this morning that there is an audit of WP's date functions because they themselves are problematic, as described here: hidden link
Note at the very bottom of the diagram on that page it shows the PHP functions you should familiarise yourself with if you want to write a custom shortcode for this, for example.
(The queue is very busy at the moment, so if you need help writing custom code it will be a while before I can help.)