mirror of
https://github.com/reactos/reactos.git
synced 2025-04-21 12:40:33 +00:00
- FileTimeToLocalFileTime() and LocalFileTimeToFileTime() take timezone bias into account.
svn path=/trunk/; revision=11868
This commit is contained in:
parent
df74513933
commit
17f1fe8577
1 changed files with 48 additions and 30 deletions
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: time.c,v 1.32 2004/11/21 06:51:17 ion Exp $
|
/* $Id: time.c,v 1.33 2004/11/29 15:02:33 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS system libraries
|
* PROJECT: ReactOS system libraries
|
||||||
|
@ -21,16 +21,16 @@
|
||||||
|
|
||||||
typedef struct __DOSTIME
|
typedef struct __DOSTIME
|
||||||
{
|
{
|
||||||
WORD Second:5;
|
WORD Second:5;
|
||||||
WORD Minute:6;
|
WORD Minute:6;
|
||||||
WORD Hour:5;
|
WORD Hour:5;
|
||||||
} DOSTIME, *PDOSTIME;
|
} DOSTIME, *PDOSTIME;
|
||||||
|
|
||||||
typedef struct __DOSDATE
|
typedef struct __DOSDATE
|
||||||
{
|
{
|
||||||
WORD Day:5;
|
WORD Day:5;
|
||||||
WORD Month:4;
|
WORD Month:4;
|
||||||
WORD Year:5;
|
WORD Year:5;
|
||||||
} DOSDATE, *PDOSDATE;
|
} DOSDATE, *PDOSDATE;
|
||||||
|
|
||||||
#define TICKSPERMIN 600000000
|
#define TICKSPERMIN 600000000
|
||||||
|
@ -217,7 +217,7 @@ FileTimeToSystemTime(
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
|
@ -226,15 +226,24 @@ FileTimeToLocalFileTime(
|
||||||
LPFILETIME lpLocalFileTime
|
LPFILETIME lpLocalFileTime
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// FIXME: include time bias
|
LARGE_INTEGER TimeZoneBias;
|
||||||
*((PLONGLONG)lpLocalFileTime) = *((PLONGLONG)lpFileTime);
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
TimeZoneBias.HighPart = SharedUserData->TimeZoneBias.High1Time;
|
||||||
|
TimeZoneBias.LowPart = SharedUserData->TimeZoneBias.LowPart;
|
||||||
|
}
|
||||||
|
while (TimeZoneBias.HighPart != SharedUserData->TimeZoneBias.High2Time);
|
||||||
|
|
||||||
|
*((PLONGLONG)lpLocalFileTime) =
|
||||||
|
*((PLONGLONG)lpFileTime) - TimeZoneBias.QuadPart;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
|
@ -243,8 +252,17 @@ LocalFileTimeToFileTime(
|
||||||
LPFILETIME lpFileTime
|
LPFILETIME lpFileTime
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
// FIXME: include time bias
|
LARGE_INTEGER TimeZoneBias;
|
||||||
*((PLONGLONG)lpFileTime) = *((PLONGLONG)lpLocalFileTime);
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
TimeZoneBias.HighPart = SharedUserData->TimeZoneBias.High1Time;
|
||||||
|
TimeZoneBias.LowPart = SharedUserData->TimeZoneBias.LowPart;
|
||||||
|
}
|
||||||
|
while (TimeZoneBias.HighPart != SharedUserData->TimeZoneBias.High2Time);
|
||||||
|
|
||||||
|
*((PLONGLONG)lpFileTime) =
|
||||||
|
*((PLONGLONG)lpLocalFileTime) + TimeZoneBias.QuadPart;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -260,8 +278,8 @@ GetLocalTime(LPSYSTEMTIME lpSystemTime)
|
||||||
FILETIME LocalFileTime;
|
FILETIME LocalFileTime;
|
||||||
|
|
||||||
GetSystemTimeAsFileTime(&FileTime);
|
GetSystemTimeAsFileTime(&FileTime);
|
||||||
FileTimeToLocalFileTime (&FileTime, &LocalFileTime);
|
FileTimeToLocalFileTime(&FileTime, &LocalFileTime);
|
||||||
FileTimeToSystemTime (&LocalFileTime, lpSystemTime);
|
FileTimeToSystemTime(&LocalFileTime, lpSystemTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -274,7 +292,7 @@ GetSystemTime(LPSYSTEMTIME lpSystemTime)
|
||||||
FILETIME FileTime;
|
FILETIME FileTime;
|
||||||
|
|
||||||
GetSystemTimeAsFileTime(&FileTime);
|
GetSystemTimeAsFileTime(&FileTime);
|
||||||
FileTimeToSystemTime (&FileTime, lpSystemTime);
|
FileTimeToSystemTime(&FileTime, lpSystemTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -286,12 +304,12 @@ SetLocalTime(CONST SYSTEMTIME *lpSystemTime)
|
||||||
{
|
{
|
||||||
FILETIME LocalFileTime;
|
FILETIME LocalFileTime;
|
||||||
LARGE_INTEGER FileTime;
|
LARGE_INTEGER FileTime;
|
||||||
NTSTATUS errCode;
|
NTSTATUS Status;
|
||||||
|
|
||||||
SystemTimeToFileTime (lpSystemTime, &LocalFileTime);
|
SystemTimeToFileTime(lpSystemTime, &LocalFileTime);
|
||||||
LocalFileTimeToFileTime (&LocalFileTime, (FILETIME *)&FileTime);
|
LocalFileTimeToFileTime(&LocalFileTime, (FILETIME *)&FileTime);
|
||||||
errCode = NtSetSystemTime (&FileTime, &FileTime);
|
Status = NtSetSystemTime(&FileTime, &FileTime);
|
||||||
if (!NT_SUCCESS(errCode))
|
if (!NT_SUCCESS(Status))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -304,11 +322,11 @@ BOOL STDCALL
|
||||||
SetSystemTime(CONST SYSTEMTIME *lpSystemTime)
|
SetSystemTime(CONST SYSTEMTIME *lpSystemTime)
|
||||||
{
|
{
|
||||||
LARGE_INTEGER NewSystemTime;
|
LARGE_INTEGER NewSystemTime;
|
||||||
NTSTATUS errCode;
|
NTSTATUS Status;
|
||||||
|
|
||||||
SystemTimeToFileTime (lpSystemTime, (PFILETIME)&NewSystemTime);
|
SystemTimeToFileTime(lpSystemTime, (PFILETIME)&NewSystemTime);
|
||||||
errCode = NtSetSystemTime (&NewSystemTime, &NewSystemTime);
|
Status = NtSetSystemTime(&NewSystemTime, &NewSystemTime);
|
||||||
if (!NT_SUCCESS(errCode))
|
if (!NT_SUCCESS(Status))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -397,7 +415,7 @@ SystemTimeToTzSpecificLocalTime(
|
||||||
|
|
||||||
if (!lpTimeZoneInformation)
|
if (!lpTimeZoneInformation)
|
||||||
{
|
{
|
||||||
GetTimeZoneInformation (&TimeZoneInformation);
|
GetTimeZoneInformation(&TimeZoneInformation);
|
||||||
lpTzInfo = &TimeZoneInformation;
|
lpTzInfo = &TimeZoneInformation;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -409,9 +427,9 @@ SystemTimeToTzSpecificLocalTime(
|
||||||
if (!lpLocalTime)
|
if (!lpLocalTime)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
SystemTimeToFileTime (lpUniversalTime, (PFILETIME)&FileTime);
|
SystemTimeToFileTime(lpUniversalTime, (PFILETIME)&FileTime);
|
||||||
FileTime.QuadPart -= (lpTzInfo->Bias * TICKSPERMIN);
|
FileTime.QuadPart -= (lpTzInfo->Bias * TICKSPERMIN);
|
||||||
FileTimeToSystemTime ((PFILETIME)&FileTime, lpLocalTime);
|
FileTimeToSystemTime((PFILETIME)&FileTime, lpLocalTime);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue