예제 #1
0
static void TestTimeArithmetics(void) {
    using vislib::sys::DateTime;
    using vislib::sys::DateTimeSpan;
    DateTime dateTime;

    dateTime.Set(1, 1, 1, 0, 0, 0);
    dateTime += DateTimeSpan::OneMillisecond();
    ::AssertEqual("Add 1 ms", dateTime, DateTime(1, 1, 1, 0, 0, 0, 1));

    dateTime.Set(1, 1, 1, 0, 0, 0, 1);
    dateTime += DateTimeSpan::OneMillisecond(false);
    ::AssertEqual("Add -1 ms", dateTime, DateTime(1, 1, 1, 0, 0, 0, 0));

    dateTime.Set(1, 1, 1, 0, 0, 0, 1);
    dateTime -= DateTimeSpan::OneMillisecond();
    ::AssertEqual("Subtract 1 ms", dateTime, DateTime(1, 1, 1, 0, 0, 0, 0));

    dateTime.Set(1, 1, 1, 0, 0, 0);
    dateTime -= DateTimeSpan::OneMillisecond(false);
    ::AssertEqual("Subtract -1 ms", dateTime, DateTime(1, 1, 1, 0, 0, 0, 1));

}
예제 #2
0
DateTime DateTime::FromUnixTimeStamp(int64 unixts, int nsec)
{
	int msec = nsec / 1000000;
	// 0 == 1970-01-01
	int64 chuts = unixts;
	chuts *= 1000;
	chuts += msec;

	DateTime date;
	date.Set(1970);
	date.m_stamp += chuts;

	date.UpdateFieldsFromStamp();
	return date;
}
예제 #3
0
int64 DateTime::ToUnixTimeStamp(int* pnsec) const
{
	DateTime dateBase;
	dateBase.Set(1970);

	int64 dif = m_stamp - dateBase.m_stamp;
	if( pnsec )
	{
		*pnsec = (dif % 1000) * 1000000;
	}
	dif /= 1000;

	if( dif < 0 )
		dif = 0;

	return dif;
}