Each time a topic is dislayed, the lastReadTime value for that topic is updated. Unfortunately, the fact that topics can be spread over multiple pages makes things a little more complicated than described above. Since we don't want to see all posts of a topic as read when switching to another page inside the same topic, backups of the last visited topic id and related lastReadTime value are stored in the user's record, and used instead of the data from the extra table when the user switches to another page in the same topic. For performance reasons, the read status is only stored in the way described above, not per user and individual post, which would generate a much too big table and slow down database queries. Without them, time will be displayed in the server's timezone as before and the respective user option field won't be visible.
Users have to manually adjust their timezone to Daylight Savings Time.
The actual server timezone is taken from the server's runtime library. There's no web page to query the log and no plaintext log file, you have to use a MySQL client and ad-hoc SQL queries. But to make it even remotely as flexible as SQL will take quite a bit of work. Some important display scripts like those that display the forum, board and topic pages are level 2. Scripts that just display forms or less important info pages are level 3.