DCL 4.0
Loading...
Searching...
No Matches
Time Class Reference

#include <DateTime.h>

Public Member Functions

 Time ()
 Time (const Time &src)
 Time (int nHour, int nMin, int nSec, int nMSec=0)
 Time (long nTotalMSecs)
void assign (int nHour, int nMin, int nSec, int nMSec=0)
void assign (long nTotalMSecs)
const Timeoperator= (const Time &src)
const Timeoperator+= (long nMilliSeconds)
const Timeoperator-= (long nMilliSeconds)
void decode (int &nHour, int &nMin, int &nSec, int &nMSec) const
int hour () const
int minute () const
int second () const
int msecond () const
String toString () const
String toStringF (const wchar_t *pszFormat=NULL)
long totalMilliSeconds () const

Static Public Member Functions

static bool isValid (int nHour, int nMin, int nSec, int nMSec)

Static Public Attributes

static const wchar_t * FORMAT_STRING = L"%H:%M:%S"

Protected Attributes

unsigned long m_uMilliSeconds

Detailed Description

Definition at line 103 of file DateTime.h.

Constructor & Destructor Documentation

◆ Time() [1/4]

Time::Time ( )

Definition at line 378 of file DateTime.cpp.

379{
380 m_uMilliSeconds = 0;
381}
unsigned long m_uMilliSeconds
Definition DateTime.h:139

◆ Time() [2/4]

Time::Time ( const Time & src)

Definition at line 384 of file DateTime.cpp.

385{
387}

◆ Time() [3/4]

Time::Time ( int nHour,
int nMin,
int nSec,
int nMSec = 0 )

Definition at line 396 of file DateTime.cpp.

397{
398 assign(nHour, nMin, nSec, nMSec);
399}
void assign(int nHour, int nMin, int nSec, int nMSec=0)
Definition DateTime.cpp:406

◆ Time() [4/4]

Time::Time ( long nTotalMSecs)

Definition at line 401 of file DateTime.cpp.

402{
403 assign(nTotalMSecs);
404}

Member Function Documentation

◆ assign() [1/2]

void Time::assign ( int nHour,
int nMin,
int nSec,
int nMSec = 0 )

Definition at line 406 of file DateTime.cpp.

407{
408 long ms = nHour * MSEC_PER_HOUR
409 + nMin * MSEC_PER_MIN
410 + nSec * 1000
411 + nMSec;
412
413 ms %= MSEC_PER_DAY;
414 ms += MSEC_PER_DAY;
416}
#define MSEC_PER_HOUR
Definition DateTime.cpp:392
#define MSEC_PER_DAY
Definition DateTime.cpp:390
#define MSEC_PER_MIN
Definition DateTime.cpp:394

◆ assign() [2/2]

void Time::assign ( long nTotalMSecs)

Definition at line 418 of file DateTime.cpp.

419{
420 nTotalMSecs %= MSEC_PER_DAY;
421 nTotalMSecs += MSEC_PER_DAY;
422 m_uMilliSeconds = nTotalMSecs % MSEC_PER_DAY;
423}

◆ decode()

void Time::decode ( int & nHour,
int & nMin,
int & nSec,
int & nMSec ) const

Definition at line 459 of file DateTime.cpp.

460{
463 nSec = (m_uMilliSeconds % MSEC_PER_MIN) / 1000;
464 nMSec = m_uMilliSeconds % 1000;
465}

◆ hour()

int Time::hour ( ) const

Definition at line 467 of file DateTime.cpp.

468{
470}

◆ isValid()

bool Time::isValid ( int nHour,
int nMin,
int nSec,
int nMSec )
static

Definition at line 525 of file DateTime.cpp.

526{
527 return (0 <= nHour && nHour <= 23)
528 && (0 <= nMin && nMin <= 59)
529 && (0 <= nSec && nSec <= 59)
530 && (0 <= nMSec && nMSec <= 999);
531}

◆ minute()

int Time::minute ( ) const

Definition at line 472 of file DateTime.cpp.

473{
475}

◆ msecond()

int Time::msecond ( ) const

Definition at line 482 of file DateTime.cpp.

483{
484 return m_uMilliSeconds % 1000;
485}

◆ operator+=()

const Time & Time::operator+= ( long nMilliSeconds)

Definition at line 432 of file DateTime.cpp.

433{
434 long ms = m_uMilliSeconds + nMilliSeconds;
435 ms %= MSEC_PER_DAY;
436 ms += MSEC_PER_DAY;
438
439 return *this;
440}

◆ operator-=()

const Time & Time::operator-= ( long nMilliSeconds)

Definition at line 442 of file DateTime.cpp.

443{
444 long ms = m_uMilliSeconds - nMilliSeconds;
445 ms %= MSEC_PER_DAY;
446 ms += MSEC_PER_DAY;
448
449 return *this;
450}

◆ operator=()

const Time & Time::operator= ( const Time & src)

Definition at line 426 of file DateTime.cpp.

427{
429 return *this;
430}

◆ second()

int Time::second ( ) const

Definition at line 477 of file DateTime.cpp.

478{
479 return (m_uMilliSeconds % MSEC_PER_MIN) / 1000;
480}

◆ toString()

String Time::toString ( ) const

Definition at line 488 of file DateTime.cpp.

489{
490 return String::format(L"%02d:%02d:%02d.%03d",
491 hour(),
492 minute(),
493 second(),
494 msecond()
495 );
496}
int hour() const
Definition DateTime.cpp:467
int second() const
Definition DateTime.cpp:477
int msecond() const
Definition DateTime.cpp:482
int minute() const
Definition DateTime.cpp:472

◆ toStringF()

String Time::toStringF ( const wchar_t * pszFormat = NULL)

Definition at line 500 of file DateTime.cpp.

501{
502 if (!pszFormat)
503 pszFormat = FORMAT_STRING;
504
505 __DCL_ASSERT(*pszFormat != L'\0');
506
507 struct tm t;
508 memset(&t, 0, sizeof(struct tm));
509 t.tm_hour = hour();
510 t.tm_min = minute();
511 t.tm_sec = second();
512 t.tm_isdst = -1;
513
514 CharBuffer* buf = CharBuffer::create(DATETIME_FORMAT_BUFFER_SIZE);
515 size_t n = wcsftime(buf->data(), DATETIME_FORMAT_BUFFER_SIZE, pszFormat, &t);
516 __DCL_ASSERT(buf->__allocLength <= n);
517 buf->__dataLength = n;
518
519 String r = buf;
520 buf->release();
521 return r;
522}
#define DATETIME_FORMAT_BUFFER_SIZE
Definition DateTime.h:21
#define __DCL_ASSERT(expr)
Definition Object.h:371
ByteString r
ByteBuffer * buf
void CharsetConvertException *size_t n
Definition SQLField.cpp:253
static const wchar_t * FORMAT_STRING
Definition DateTime.h:129

◆ totalMilliSeconds()

long Time::totalMilliSeconds ( ) const
inline

Definition at line 65 of file DateTime.inl.

66{
67 return m_uMilliSeconds;
68}

Member Data Documentation

◆ FORMAT_STRING

const wchar_t * Time::FORMAT_STRING = L"%H:%M:%S"
static

Definition at line 129 of file DateTime.h.

◆ m_uMilliSeconds

unsigned long Time::m_uMilliSeconds
protected

Definition at line 139 of file DateTime.h.


The documentation for this class was generated from the following files: