SystemTimeToVariantTime with milliseconds << Back



For reason that is not explained in the offical documentation, SystemTimeToVariantTime will just ignore the millisecond part. Let's have a version of SystemTimeToVariantTime that will preserve the millisecond part!

INT SystemTimeToVariantTimeEx(const LPSYSTEMTIME lpSystemTime, DOUBLE* pvDateTime)
{
	DOUBLE vDateTime;
	INT iResult;
	iResult = SystemTimeToVariantTime(lpSystemTime, pvDateTime);
	if (iResult)
	{
		if (lpSystemTime->wMilliseconds < 1000)
		{
			vDateTime = lpSystemTime->wMilliseconds;
			vDateTime /= 86400000.0;
			if (*pvDateTime < 0.0) *pvDateTime -= vDateTime;
			else *pvDateTime += vDateTime;
		}
		return 0;
	}
	return iResult;
}
Free Web Hosting