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

#include <DateTime.h>

Public Member Functions

 Time ()
 Time (const Time &_src)
 Time (int _hour, int _min, int _sec, int _millisecond=0)
 Time (long _milliseconds)
void assign (int _hour, int _min, int _sec, int _millisecond=0)
void assign (long _milliseconds)
const Timeoperator= (const Time &_src)
const Timeoperator+= (long _milliseconds)
const Timeoperator-= (long _milliseconds)
void decode (int &_hour, int &_min, int &_sec, int &_millisecond) const
int hour () const
int minute () const
int second () const
int msecond () const
String toString () const
String toStringF (const wchar_t *_format=NULL)
long totalMilliSeconds () const

Static Public Member Functions

static bool isValid (int _hour, int _min, int _sec, int _millisecond)

Static Public Attributes

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

Protected Attributes

unsigned long __milliseconds

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 __milliseconds = 0;
381}
unsigned long __milliseconds
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 _hour,
int _min,
int _sec,
int _millisecond = 0 )

Definition at line 396 of file DateTime.cpp.

397{
398 assign(_hour, _min, _sec, _millisecond);
399}
void assign(int _hour, int _min, int _sec, int _millisecond=0)
Definition DateTime.cpp:406

◆ Time() [4/4]

Time::Time ( long _milliseconds)

Definition at line 401 of file DateTime.cpp.

402{
403 assign(_milliseconds);
404}

Member Function Documentation

◆ assign() [1/2]

void Time::assign ( int _hour,
int _min,
int _sec,
int _millisecond = 0 )

Definition at line 406 of file DateTime.cpp.

407{
408 long msec = _hour * MSEC_PER_HOUR
409 + _min * MSEC_PER_MIN
410 + _sec * 1000
411 + _millisecond;
412
413 msec %= MSEC_PER_DAY;
414 msec += 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 _milliseconds)

Definition at line 418 of file DateTime.cpp.

419{
420 _milliseconds %= MSEC_PER_DAY;
421 _milliseconds += MSEC_PER_DAY;
422 __milliseconds = _milliseconds % MSEC_PER_DAY;
423}

◆ decode()

void Time::decode ( int & _hour,
int & _min,
int & _sec,
int & _millisecond ) const

Definition at line 459 of file DateTime.cpp.

460{
463 _sec = (__milliseconds % MSEC_PER_MIN) / 1000;
464 _millisecond = __milliseconds % 1000;
465}

◆ hour()

int Time::hour ( ) const

Definition at line 467 of file DateTime.cpp.

468{
470}

◆ isValid()

bool Time::isValid ( int _hour,
int _min,
int _sec,
int _millisecond )
static

Definition at line 525 of file DateTime.cpp.

526{
527 return (0 <= _hour && _hour <= 23)
528 && (0 <= _min && _min <= 59)
529 && (0 <= _sec && _sec <= 59)
530 && (0 <= _millisecond && _millisecond <= 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 __milliseconds % 1000;
485}

◆ operator+=()

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

Definition at line 432 of file DateTime.cpp.

433{
434 long msec = __milliseconds + _milliseconds;
435 msec %= MSEC_PER_DAY;
436 msec += MSEC_PER_DAY;
438
439 return *this;
440}

◆ operator-=()

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

Definition at line 442 of file DateTime.cpp.

443{
444 long msec = __milliseconds - _milliseconds;
445 msec %= MSEC_PER_DAY;
446 msec += 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 (__milliseconds % 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 * _format = NULL)

Definition at line 500 of file DateTime.cpp.

501{
502 if (!_format)
503 _format = FORMAT_STRING;
504
505 __DCL_ASSERT(*_format != L'\0');
506
507 struct tm _time;
508 memset(&_time, 0, sizeof(struct tm));
509 _time.tm_hour = hour();
510 _time.tm_min = minute();
511 _time.tm_sec = second();
512 _time.tm_isdst = -1;
513
514 CharBuffer* buf = CharBuffer::create(DATETIME_FORMAT_BUFFER_SIZE);
515 size_t n = wcsftime(buf->data(), DATETIME_FORMAT_BUFFER_SIZE, _format, &_time);
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:254
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 __milliseconds;
68}

Member Data Documentation

◆ __milliseconds

unsigned long Time::__milliseconds
protected

Definition at line 139 of file DateTime.h.

◆ FORMAT_STRING

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

Definition at line 129 of file DateTime.h.


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