Have you checked the time of the server?
Limesurvey uses the time of the server, which can be totally different to the local time of the respondent.
Here an example: My server is located in Germany, but most of my users and respondents would be from Brazil. However, Limesurvey takes the system time, because it doesn't really know the local time of each respondent.
Limesurvey has the option to change this date and adapt it to your local time. e.g. can correct the system time of the server by X hours to match the local time here. However, if someone from Australia responds one of my questionnaires, the date would still be the system date/time +/- the correction in Limesurvey.
For the US: As you guys have so many time zones from East to West, this can have an impact. E.g. if the server is on EST and the respondent on PST there is already quite a difference in time and for the night shift possible also in date.
With this, one will always suffer. Either the respondent or the one that is the owner of the software. Maybe you can try to save both times, the time when Limesurvey received it, via the (corrected) server time and maybe via Javascript the time on the side of the respondent. Not sure if this is possible, but I think it should be possible to use the time of the respondent's device and save it in a hidden question.
My bet would be that javascript gets the time from the machine/browser of the respondent, not of the server. Something like that:
www.w3docs.com/snippets/javascript/how-t...e-in-javascript.html
Not sure if this is the problem though, but I can imagine it is, given that it is a problem mainly for the night shift.
The correction of the server time can be found under "Configuration" --> "Global (Settings)" --> General --> "Time difference (in hours)".