Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (C) Microsoft Corporation, 1997 - 1998 All rights reserved.
Module Name:
time.cxx
Abstract:
time related functions.
Author:
Steve Kiraly (SteveKi) 18-Dec-1997
--*/
#include "precomp.hxx"
#pragma hdrstop
#include "time.hxx"
#include "persist.hxx"
/*++
Routine Name:
GetTimeZoneBias
Routine Description:
Returns the time zone bias.
Arguments:
Nothing.
Return Value:
Value of the time zone specific bias.
--*/ LONG lGetTimeZoneBias( VOID ) { LONG lBias; TIME_ZONE_INFORMATION tzi;
//
// Get the time zone specific bias.
//
switch( GetTimeZoneInformation( &tzi ) ){
case TIME_ZONE_ID_DAYLIGHT:
lBias = (tzi.Bias + tzi.DaylightBias); break;
case TIME_ZONE_ID_STANDARD:
lBias = (tzi.Bias + tzi.StandardBias); break;
case TIME_ZONE_ID_UNKNOWN:
lBias = tzi.Bias; break;
default: DBGMSG(DBG_ERROR, ("GetTimeZoneInformation failed: %d\n", GetLastError())); lBias = 0; break; }
return lBias;
}
/*++
Routine Name:
SystemTimeToLocalTime
Routine Description:
Converts the system time in minutes to local time in minutes.
Arguments:
System time in minutes to convert.
Return Value:
The converted local time in minutes if sucessful, otherwize returns the original system time.
--*/ DWORD SystemTimeToLocalTime( IN DWORD Minutes ) { //
// Ensure there is no wrap around. Add a full day to
// prevent biases
//
Minutes += (24*60);
//
// Adjust for bias.
//
Minutes -= lGetTimeZoneBias();
//
// Now discard extra day.
//
Minutes = Minutes % (24*60);
return Minutes;
}
/*++
Routine Name:
LocalTimeToSystemTime
Routine Description:
Converts the local time in minutes to system time in minutes.
Arguments:
Local time in minutes to convert.
Return Value:
The converted system time in minutes if sucessful, otherwize returns the original local time.
--*/ DWORD LocalTimeToSystemTime( IN DWORD Minutes ) { //
// Ensure there is no wrap around. Add a full day to
// prevent biases
//
Minutes += (24*60);
//
// Adjust for bias.
//
Minutes += lGetTimeZoneBias();
//
// Now discard extra day.
//
Minutes = Minutes % (24*60);
return Minutes;
}
/*++
Routine Name:
bGetTimeFormatString(
Routine Description:
Get the time format string for the time picker control without the second specifier.
Arguments:
Refernece to string class where to return string.
Return Value:
TRUE format string returned. FALSE error occurred.
--*/ BOOL bGetTimeFormatString( IN TString &strFormatString ) { //
// Setup the time picker controls to use a short time format with no seconds.
//
TCHAR szTimeFormat[MAX_PATH] = {0}; TCHAR szTimeSep[MAX_PATH] = {0}; LPTSTR pszTimeFormat = szTimeFormat; BOOL bStatus = FALSE;
if( GetLocaleInfo( LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, szTimeFormat, COUNTOF(szTimeFormat)) &&
GetLocaleInfo( LOCALE_USER_DEFAULT, LOCALE_STIME, szTimeSep, COUNTOF(szTimeSep))) { INT cchTimeSep = _tcslen(szTimeSep);
TCHAR szShortTimeFormat[MAX_PATH]; LPTSTR pszShortTimeFormat = szShortTimeFormat;
//
// Remove the seconds format string and preceeding separator.
//
while (*pszTimeFormat) { if ((*pszTimeFormat != TEXT('s')) && (*pszTimeFormat != TEXT('S'))) { *pszShortTimeFormat++ = *pszTimeFormat; } else { *pszShortTimeFormat = TEXT('\0');
bTrimString(szShortTimeFormat, TEXT(" ")); bTrimString(szShortTimeFormat, szTimeSep);
pszShortTimeFormat = szShortTimeFormat + lstrlen(szShortTimeFormat); }
pszTimeFormat++; }
*pszShortTimeFormat = TEXT('\0');
bStatus = strFormatString.bUpdate( szShortTimeFormat ); }
return bStatus; }
|