How is your time configured on the VM? Did you configured to take from a DC or to take time from the ESXi host? Is it better to configure to get time settings from the DC. If you already have it, check in the VM options if the Time Synchronization is checked
Time sync is configured to sync from DC. Also, I have a checked in VM option the checkbox is unchecked to sync from host.
We have called Microsoft and they said that the VMware tools is resetting the time.
In some cases time is synchronized with the host, even though it's not explicitly configured.
Please check whether the host's time gets properly sync'd, and if the time on the host is correct.
In case time is incorrect on the host, you need to be careful with changing it, as a change may affect VMs, which are running on that host. The most secure option to change the host time is to evacuate the host (i.e. vMotion the VMs to other hosts), or power off the VMs if they are time sensitive (e.g. AD members).
How much is the time off by?
Have you tired restarting the Windows Time Service on the servers and forcing a re-sync on the time?
Time off was by 4 hours and sometime 14 hours off.
Windows Time Service on the servers and forcing a re-sync on the time - yes
Try running w32tm /query /status on one of those servers and see what time source you are using. It really sounds like these servers might be using a different time server than everything else.
You said you checked vmware tools to make sure time was not getting sync'd from there. Did you configure NTP on your ESXi host? Are they set to get time from the same source?