// 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