Your time zone is Eastern, which is currently EDT (Eastern Daylight Time). EDT is UTC minus four hours, the same as the offset you're experiencing.
When this happens on a dual-boot system, it's usually because one operating system thinks the hardware clock tracks local time, while the other operating system thinks the hardware clock tracks UTC.
In your case, your hardware clock is probably set to the local time, and:
- Windows is set to use local time, which (given your time settings) is correct.
- Ubuntu is set to use UTC, which (given your time settings) is incorrect.
If you were to just reset the time in the Ubuntu system, either manually or automatically, it would then be wrong in Windows, so that's not a good solution.
Instead, the best solution is probably to reconfigure Ubuntu to treat the hardware clock time as local time (then you can leave your Windows configuration, and your hardware clock time, alone).
To do this, edit /etc/default/rcS as root and make sure it has UTC=no:
Press Alt+F2.
Type gksu gedit /etc/default/rcS and press Enter.
You'll probably see this:
# assume that the BIOS clock is set to UTC time (recommended)
UTC=yes
- If you do, change
UTC=yes to UTC=no. (Or you might want to add a comment too, by changing it to something like UTC=no # changed to accommodate Windows system. Everything on a line after a # character is a comment, and is there just to make your settings more human-readable.)
- If you don't, look for any
UTC= line. If it's uncommented (i.e., doesn't have a # at the beginning), change it accordingly. If it is commented, uncomment it by removing the leading # and make sure it says UTC=no.
Save the file and quit the text editor.
Reboot to apply your changes and check that the time is working properly now on both operating systems.
Source: https://help.ubuntu.com/community/UbuntuTime#Make_Linux_use_.27Local.27_time
(But that is very general; I have written this answer to apply specifically to your situation, which is a somewhat common problem.)