Within 1 second isn't too hard because you can buy an older GPS unit with an RS-232 output and just read the serial strings it sends out to get the current time from a satellite. I've done this with an ancient Earthmate I bought surplus to keep a pump station's time accurate.
Some PLCs have GPS modules available that include the satellite time as part of the signal. The one I'm most familiar with is the HIPROM GPS module for ControlLogix. This will give you very accurate time but isn't cheap.
If these machines are connected to a plant network or other WAN that includes a Network Time Server and there are computers that are known to have an accurate time, then you should be able to easily keep their times in sync by sending the computer time to the machine. Again, the software I'm most familiar with is the Logix 5000 Clock Tool that sets the time on multiple PLC/SLC/Logix controllers based on a computer workstation time.