180 lines
5.1 KiB
C++
180 lines
5.1 KiB
C++
// FaxTime.cpp: implementation of the CFaxTime class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#include "stdafx.h"
|
|
#define __FILE_ID__ 9
|
|
|
|
CString
|
|
CFaxDuration::FormatByUserLocale () const
|
|
/*++
|
|
|
|
Routine name : CFaxDuration::FormatByUserLocale
|
|
|
|
Routine description:
|
|
|
|
Formats the duration according to the locale of the current user
|
|
|
|
Author:
|
|
|
|
Eran Yariv (EranY), Jan, 2000
|
|
|
|
Arguments:
|
|
|
|
|
|
Return Value:
|
|
|
|
String of result duration
|
|
|
|
--*/
|
|
{
|
|
DWORD dwRes = ERROR_SUCCESS;
|
|
DBG_ENTER(TEXT("CFaxDuration::FormatByUserLocale"));
|
|
|
|
TCHAR szTimeSep[20];
|
|
//
|
|
// Make sure the duration is less than 24Hrs
|
|
//
|
|
if (GetDays ())
|
|
{
|
|
ASSERTION_FAILURE;
|
|
AfxThrowUserException ();
|
|
}
|
|
//
|
|
// Get the string (MSDN says its up to 4 characters) seperating time units
|
|
//
|
|
if (!GetLocaleInfo (LOCALE_USER_DEFAULT,
|
|
LOCALE_STIME,
|
|
szTimeSep,
|
|
sizeof (szTimeSep) / sizeof (szTimeSep[0])))
|
|
{
|
|
dwRes = GetLastError ();
|
|
CALL_FAIL (RESOURCE_ERR, TEXT("GetLocaleInfo"), dwRes);
|
|
PopupError (dwRes);
|
|
AfxThrowResourceException ();
|
|
}
|
|
//
|
|
// Create a string specifying the duration
|
|
//
|
|
CString cstrResult;
|
|
cstrResult.Format (TEXT("%d%s%02d%s%02d"),
|
|
GetHours (),
|
|
szTimeSep,
|
|
GetMinutes (),
|
|
szTimeSep,
|
|
GetSeconds ());
|
|
return cstrResult;
|
|
} // CFaxDuration::FormatByUserLocale
|
|
|
|
|
|
CString
|
|
CFaxTime::FormatByUserLocale (BOOL bLocal) const
|
|
/*++
|
|
|
|
Routine name : CFaxTime::FormatByUserLocale
|
|
|
|
Routine description:
|
|
|
|
Formats the date and time according to the locale of the current user
|
|
|
|
Author:
|
|
|
|
Eran Yariv (EranY), Jan, 2000
|
|
|
|
Arguments:
|
|
|
|
bLocal [in] - if TRUE no need to convert from UTC to a local time
|
|
|
|
Return Value:
|
|
|
|
String of result date and time
|
|
|
|
--*/
|
|
{
|
|
DWORD dwRes = ERROR_SUCCESS;
|
|
DBG_ENTER(TEXT("CFaxTime::FormatByUserLocale"));
|
|
|
|
CString cstrRes;
|
|
TCHAR szTimeBuf[40];
|
|
TCHAR szDateBuf[120];
|
|
|
|
SYSTEMTIME sysTime;
|
|
FILETIME fileSysTime, fileLocalTime;
|
|
|
|
if(!GetAsSystemTime (sysTime))
|
|
{
|
|
dwRes = GetLastError ();
|
|
CALL_FAIL (RESOURCE_ERR, TEXT("CTime::GetAsSystemTime"), dwRes);
|
|
PopupError (dwRes);
|
|
AfxThrowResourceException ();
|
|
}
|
|
|
|
if(!bLocal)
|
|
{
|
|
//
|
|
// convert the time from UTC to a local time
|
|
//
|
|
if(!SystemTimeToFileTime(&sysTime, &fileSysTime))
|
|
{
|
|
dwRes = GetLastError ();
|
|
CALL_FAIL (RESOURCE_ERR, TEXT("SystemTimeToFileTime"), dwRes);
|
|
PopupError (dwRes);
|
|
AfxThrowResourceException ();
|
|
}
|
|
|
|
if(!FileTimeToLocalFileTime(&fileSysTime, &fileLocalTime))
|
|
{
|
|
dwRes = GetLastError ();
|
|
CALL_FAIL (RESOURCE_ERR, TEXT("FileTimeToLocalFileTime"), dwRes);
|
|
PopupError (dwRes);
|
|
AfxThrowResourceException ();
|
|
}
|
|
|
|
if(!FileTimeToSystemTime(&fileLocalTime, &sysTime))
|
|
{
|
|
dwRes = GetLastError ();
|
|
CALL_FAIL (RESOURCE_ERR, TEXT("FileTimeToSystemTime"), dwRes);
|
|
PopupError (dwRes);
|
|
AfxThrowResourceException ();
|
|
}
|
|
}
|
|
|
|
//
|
|
// Create a string specifying the date
|
|
//
|
|
if (!GetY2KCompliantDate(LOCALE_USER_DEFAULT, // Get user's locale
|
|
DATE_SHORTDATE, // Short date format
|
|
&sysTime, // Source date/time
|
|
szDateBuf, // Output buffer
|
|
sizeof(szDateBuf) / sizeof(szDateBuf[0]) // Output buffer size
|
|
))
|
|
{
|
|
dwRes = GetLastError ();
|
|
CALL_FAIL (RESOURCE_ERR, TEXT("GetY2KCompliantDate()"), dwRes);
|
|
PopupError (dwRes);
|
|
AfxThrowResourceException ();
|
|
}
|
|
//
|
|
// Create a string specifying the time
|
|
//
|
|
if (!FaxTimeFormat (LOCALE_USER_DEFAULT, // Get user's locale
|
|
0, // No special format
|
|
&sysTime, // Source date/time
|
|
NULL, // Use format from locale
|
|
szTimeBuf, // Output buffer
|
|
sizeof(szTimeBuf) / sizeof(szTimeBuf[0]) // Output buffer size
|
|
))
|
|
{
|
|
dwRes = GetLastError ();
|
|
CALL_FAIL (RESOURCE_ERR, TEXT("FaxTimeFormat"), dwRes);
|
|
PopupError (dwRes);
|
|
AfxThrowResourceException ();
|
|
}
|
|
//
|
|
// Append time after date with a seperating space character
|
|
//
|
|
|
|
cstrRes.Format (TEXT("%s %s"), szDateBuf, szTimeBuf);
|
|
|
|
return cstrRes;
|
|
} // CFaxTime::FormatByUserLocale
|