home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-09-17 | 9.6 KB | 339 lines | [TEXT/MPS ] |
- //========================================================================================
- //
- // File: FWTime.cpp
- // Release Version: $ ODF 2 $
- //
- // Copyright: (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
- //
- //========================================================================================
-
- #include "FWOS.hpp"
-
- #ifndef FWTIME_H
- #include "FWTime.h"
- #endif
-
- #ifndef FWSTRING_H
- #include "FWString.h"
- #endif
-
- #if defined(FW_BUILD_MAC) && !defined(__TEXTUTILS__)
- #include <TextUtils.h>
- #endif
-
- //========================================================================================
- // Runtime Informations
- //========================================================================================
-
- #ifdef FW_BUILD_MAC
- #pragma segment fwosmisc
- #endif
-
- //========================================================================================
- // CLASS FW_CTime
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CTime constructor
- //----------------------------------------------------------------------------------------
-
- FW_CTime::FW_CTime() :
- fTime(0)
- {
- ::time(&fTime);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime constructor
- //----------------------------------------------------------------------------------------
-
- FW_CTime::FW_CTime(short year, short month, short day, short hour, short minute, short second)
- {
- struct tm dateTime;
-
- dateTime.tm_year = year - 1900;
- dateTime.tm_mon = month - 1; // Specified as 1-12, expects 0-11
- dateTime.tm_mday = day;
- dateTime.tm_hour = hour;
- dateTime.tm_min = minute;
- dateTime.tm_sec = second;
-
- fTime = mktime(&dateTime);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::GetCurrentTime
- //----------------------------------------------------------------------------------------
-
- FW_CTime FW_CTime::GetCurrentTime()
- {
- time_t dateTime;
-
- ::time(&dateTime);
-
- return FW_CTime(dateTime);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::GetSecond
- //----------------------------------------------------------------------------------------
-
- short FW_CTime::GetSecond() const
- {
- struct tm* dateTime;
-
- dateTime = localtime(&fTime);
- return dateTime->tm_sec;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::GetMinute
- //----------------------------------------------------------------------------------------
-
- short FW_CTime::GetMinute() const
- {
- struct tm* dateTime;
-
- dateTime = localtime(&fTime);
- return dateTime->tm_min;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::GetHour
- //----------------------------------------------------------------------------------------
-
- short FW_CTime::GetHour() const
- {
- struct tm* dateTime;
-
- dateTime = localtime(&fTime);
- return dateTime->tm_hour;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::GetDayOfWeek
- //----------------------------------------------------------------------------------------
-
- short FW_CTime::GetDayOfWeek() const
- {
- struct tm* dateTime;
-
- dateTime = localtime(&fTime);
- return dateTime->tm_wday + 1;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::GetDayOfMonth
- //----------------------------------------------------------------------------------------
-
- short FW_CTime::GetDayOfMonth() const
- {
- struct tm* dateTime;
-
- dateTime = localtime(&fTime);
- return dateTime->tm_mday;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::GetDayOfYear
- //----------------------------------------------------------------------------------------
-
- short FW_CTime::GetDayOfYear() const
- {
- struct tm* dateTime;
-
- dateTime = localtime(&fTime);
- return dateTime->tm_yday; // 0 thru 365
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::GetMonth
- //----------------------------------------------------------------------------------------
-
- short FW_CTime::GetMonth() const
- {
- struct tm* dateTime;
-
- dateTime = localtime(&fTime);
- return dateTime->tm_mon + 1;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::GetYear
- //----------------------------------------------------------------------------------------
-
- short FW_CTime::GetYear() const
- {
- struct tm* dateTime;
-
- dateTime = localtime(&fTime);
- return dateTime->tm_year + 1900;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::IsDaylightSavings
- //----------------------------------------------------------------------------------------
-
- short FW_CTime::IsDaylightSavings() const
- {
- struct tm* dateTime;
-
- dateTime = localtime(&fTime);
- return dateTime->tm_isdst;
- }
-
- #ifdef FW_BUILD_MAC
- //----------------------------------------------------------------------------------------
- // FW_CTime::MacConvertMacTimeToODTime
- //----------------------------------------------------------------------------------------
-
- ODTime FW_CTime::MacConvertMacTimeToODTime(unsigned long t)
- {
- struct tm dateTime;
- DateTimeRec macDateTime;
-
- ::SecondsToDate(t, &macDateTime);
-
- dateTime.tm_year = macDateTime.year - 1900;
- dateTime.tm_mon = macDateTime.month - 1;
- dateTime.tm_mday = macDateTime.day;
- dateTime.tm_hour = macDateTime.hour;
- dateTime.tm_min = macDateTime.minute;
- dateTime.tm_sec = macDateTime.second;
-
- return mktime(&dateTime);
- }
- #endif
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::MacConvertODTimeToMacTime
- //----------------------------------------------------------------------------------------
-
- #ifdef FW_BUILD_MAC
- unsigned long FW_CTime::MacConvertODTimeToMacTime(ODTime t)
- {
- struct tm* dateTime = localtime(&t);
- unsigned long macTime;
- DateTimeRec macDateTime;
-
- macDateTime.year = dateTime->tm_year + 1900;
- macDateTime.month = dateTime->tm_mon + 1;
- macDateTime.day = dateTime->tm_mday;
- macDateTime.hour = dateTime->tm_hour;
- macDateTime.minute = dateTime->tm_min;
- macDateTime.second = dateTime->tm_sec;
-
- ::DateToSeconds(&macDateTime, &macTime);
- return macTime;
- }
- #endif
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::GetTimeString
- //----------------------------------------------------------------------------------------
-
- void FW_CTime::GetTimeString(FW_CString& timeString, FW_Boolean displaySeconds) const
- {
- #ifdef FW_BUILD_MAC
- Str32 tempString;
- ::IUTimeString(MacConvertODTimeToMacTime(fTime), displaySeconds, tempString);
-
- timeString.ReplaceAll(tempString);
- #endif
-
- #ifdef FW_BUILD_WIN
- struct tm* dateTime;
- FW_Char tempString[32];
-
- dateTime = localtime(&fTime);
- strftime(tempString, 32, "%X", dateTime);
-
- timeString.ReplaceAll(tempString);
- FW_UNUSED(displaySeconds);
- #endif
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::GetDateString
- //----------------------------------------------------------------------------------------
-
- void FW_CTime::GetDateString(FW_CString& dateString, DateForm form) const
- {
- #ifdef FW_BUILD_MAC
- Str255 tempString;
- ODTime t = MacConvertODTimeToMacTime(fTime);
-
- if (form == kShortDate)
- ::IUDateString(t, shortDate, tempString);
- else if (form == kLongDate)
- ::IUDateString(t, longDate, tempString);
- else
- ::IUDateString(t, abbrevDate, tempString);
-
- dateString.ReplaceAll(tempString);
- #endif
-
- #ifdef FW_BUILD_WIN
- struct tm* dateTime;
- FW_Char tempString[255];
-
- dateTime = localtime(&fTime);
- strftime(tempString, 255, "%x", dateTime);
-
- dateString.ReplaceAll(tempString);
- FW_UNUSED(form);
- #endif
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::operator -
- //----------------------------------------------------------------------------------------
-
- FW_CTime FW_CTime::operator-(FW_CTimeSpan timeSpan) const
- {
- return FW_CTime(fTime - timeSpan.GetTotalSeconds());
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::operator -
- //----------------------------------------------------------------------------------------
-
- FW_CTimeSpan FW_CTime::operator-(FW_CTime time) const
- {
- return FW_CTimeSpan(fTime - time.GetTime());
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::operator +
- //----------------------------------------------------------------------------------------
-
- FW_CTime FW_CTime::operator+(FW_CTimeSpan timeSpan) const
- {
- return FW_CTime(fTime + timeSpan.GetTotalSeconds());
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::operator -=
- //----------------------------------------------------------------------------------------
-
- const FW_CTime& FW_CTime::operator-=(FW_CTimeSpan timeSpan)
- {
- fTime -= timeSpan.GetTotalSeconds();
- return *this;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CTime::operator +=
- //----------------------------------------------------------------------------------------
-
- const FW_CTime& FW_CTime::operator+=(FW_CTimeSpan timeSpan)
- {
- fTime += timeSpan.GetTotalSeconds();
- return *this;
- }
-
- //========================================================================================
- // CLASS FW_CTimeSpan
- //========================================================================================
-
-