コード例 #1
0
CCSDateTime& CCSDateTime::Assign( int year, int month, int day, int hour /*= 0*/, int minute /*= 0*/, int second /*= 0*/, int milliscond /*= 0*/, int microseccond /*= 0 */ )
{
	assert (year >= 0 && year <= 9999);
	assert (month >= 1 && month <= 12);
	assert (day >= 1 && day <= DaysOfMonth(year, month));
	assert (hour >= 0 && hour <= 23);
	assert (minute >= 0 && minute <= 59);
	assert (second >= 0 && second <= 59);
	assert (milliscond >= 0 && milliscond <= 999);
	assert (microseccond >= 0 && microseccond <= 999);

	m_ts = ToUtcTime( ToJulianDay( year, month, day, hour) + 
		10 * ( hour * CCSTimeSpan::HOURS + minute * CCSTimeSpan::MINUTES + second * CCSTimeSpan::SECONDS + milliscond * CCSTimeSpan::MILLISECONDS + microseccond ));

	m_year			= year;
	m_month			= month;
	m_day			= day;
	m_hour			= hour;
	m_minute		= minute;
	m_second		= second;
	m_millisecond	= milliscond;
	m_microsecond	= microseccond;

	return (*this);
}
コード例 #2
0
void CCSDateTime::Normalize()
{
	CheckLimit(m_microsecond, m_millisecond, 1000);
	CheckLimit(m_millisecond, m_second, 1000);
	CheckLimit(m_second, m_minute, 60);
	CheckLimit(m_minute, m_hour, 60);
	CheckLimit(m_hour, m_day, 24);

	if (m_day > DaysOfMonth(m_year, m_month))
	{
		m_day -= DaysOfMonth(m_year, m_month);
		if (++m_month > 12)
		{
			++m_year;
			m_month -= 12;
		}
	}
}
コード例 #3
0
ファイル: Date.hpp プロジェクト: changfeng777/DataStruct
	// 检查时间是否有效
	bool CheckDate ()
	{
		if(_year < 1900
			||(_month < 1 || _month > 12)
			||(_day < 1   || _day > DaysOfMonth(_year, _month)))
			return false;
		else
			return true;
	}
コード例 #4
0
bool CCSDateTime::IsValid( int year, int month, int day, int hour /*= 0*/, int minute /*= 0*/, int second /*= 0*/, int millisecond /*= 0*/, int microsecond /*= 0*/ )
{
	return
		(year >= 0 && year <= 9999) &&
		(month >= 1 && month <= 12) &&
		(day >= 1 && day <= DaysOfMonth(year, month)) &&
		(hour >= 0 && hour <= 23) &&
		(minute >= 0 && minute <= 59) &&
		(second >= 0 && second <= 59) &&
		(millisecond >= 0 && millisecond <= 999) &&
		(microsecond >= 0 && microsecond <= 999);
}
コード例 #5
0
int CCSDateTime::DayOfYear() const
{
	int doy = 0;
	for ( int month = 1; month < m_month; ++month )
	{
		doy += DaysOfMonth( m_year, month );
	}

	doy += m_day;

	return doy;
}
コード例 #6
0
ファイル: job.c プロジェクト: amaneureka/reactos
VOID
CalculateNextStartTime(PJOB pJob)
{
    SYSTEMTIME StartTime;
    FILETIME FileTime;
    DWORD_PTR Now;

    TRACE("CalculateNextStartTime(%p)\n", pJob);

    GetLocalTime(&StartTime);

    Now = (DWORD_PTR)StartTime.wHour * 3600000 +
          (DWORD_PTR)StartTime.wMinute * 60000;

    StartTime.wMilliseconds = 0;
    StartTime.wSecond = 0;
    StartTime.wHour = (WORD)(pJob->JobTime / 3600000);
    StartTime.wMinute = (WORD)((pJob->JobTime % 3600000) / 60000);

    /* Start the job tomorrow */
    if (Now > pJob->JobTime)
    {
        if (StartTime.wDay + 1 > DaysOfMonth(StartTime.wMonth, StartTime.wYear))
        {
            if (StartTime.wMonth == 12)
            {
                StartTime.wDay = 1;
                StartTime.wMonth = 1;
                StartTime.wYear++;
            }
            else
            {
                StartTime.wDay = 1;
                StartTime.wMonth++;
            }
        }
        else
        {
            StartTime.wDay++;
        }
    }

    TRACE("Next start: %02hu:%02hu %02hu.%02hu.%hu\n", StartTime.wHour,
          StartTime.wMinute, StartTime.wDay, StartTime.wMonth, StartTime.wYear);

    SystemTimeToFileTime(&StartTime, &FileTime);
    pJob->StartTime.u.LowPart = FileTime.dwLowDateTime;
    pJob->StartTime.u.HighPart = FileTime.dwHighDateTime;
}
コード例 #7
0
void CCSDateTime::ComputeGregorian( double julianDay )
{
	double z = std::floor( julianDay - 1721118.5);
	double r = julianDay - 1721118.5 - z;
	double g = z - 0.25;
	double a = std::floor( g / 36524.25 );
	double b = a - std::floor(a/4);

	m_year = short( std::floor(( b + a ) / 365.25));
	double c = b + z - std::floor(365.25*m_year);
	m_month = short( std::floor((5*c + 456)/153) );
	double dday = c - std::floor((153.0*m_month - 457)/5) + r;
	m_day = short( dday );

	if (m_month > 12)
	{
		++m_year;
		m_month -= 12;
	}
	r      *= 24;
	m_hour   = short(std::floor(r));
	r      -= std::floor(r);
	r      *= 60;
	m_minute = short(std::floor(r));
	r      -= std::floor(r);
	r      *= 60;
	m_second = short(std::floor(r));
	r      -= std::floor(r);
	r      *= 1000;
	m_millisecond = short(std::floor(r));
	r      -= std::floor(r);
	r      *= 1000;
	m_microsecond = short(r + 0.5);

	Normalize();

	assert (m_month >= 1 && m_month <= 12);
	assert (m_day >= 1 && m_day <= DaysOfMonth(m_year, m_month));
	assert (m_hour >= 0 && m_hour <= 23);
	assert (m_minute >= 0 && m_minute <= 59);
	assert (m_second >= 0 && m_second <= 59);
	assert (m_millisecond >= 0 && m_millisecond <= 999);
	assert (m_microsecond >= 0 && m_microsecond <= 999);
}
コード例 #8
0
CCSDateTime::CCSDateTime( int year, int month, int day, int hour /*= 0*/, int minutes /*= 0*/, int seconds /*= 0*/, int milliseconds /*= 0*/, int microseconds /*= 0 */ )
	: m_year( year )
	, m_month( month )
	, m_day( day )
	, m_hour( hour )
	, m_minute( minutes )
	, m_second( seconds )
	, m_millisecond( milliseconds )
	, m_microsecond( microseconds )
{
	assert(year >= 0 && year <= 9999);
	assert (month >= 1 && month <= 12);
	assert (day >= 1 && day <= DaysOfMonth(year, month));
	assert (hour >= 0 && hour <= 23);
	assert (minutes >= 0 && minutes <= 59);
	assert (seconds >= 0 && seconds <= 59);
	assert (milliseconds >= 0 && milliseconds <= 999);
	assert (microseconds >= 0 && microseconds <= 999);

	m_ts = ToUtcTime( ToJulianDay( year, month, day, hour) + 
		10 * ( hour * CCSTimeSpan::HOURS + minutes * CCSTimeSpan::MINUTES + seconds * CCSTimeSpan::SECONDS + milliseconds * CCSTimeSpan::MILLISECONDS + microseconds ));
}
コード例 #9
0
ファイル: timegm.cpp プロジェクト: Mapotempo/omim
  days += g_monoff[tm.tm_mon];

  if (tm.tm_mon > 1 && IsLeapYear(year))
    ++days;
  days += tm.tm_mday - 1;

  hours = days * 24 + tm.tm_hour;
  minutes = hours * 60 + tm.tm_min;
  seconds = minutes * 60 + tm.tm_sec;

  return my::SecondsSinceEpochToTimeT(seconds);
}

time_t TimeGM(int year, int month, int day, int hour, int min, int sec)
{
  ASSERT_GREATER_OR_EQUAL(month, 1, ());
  ASSERT_LESS_OR_EQUAL(month, 12, ());
  ASSERT_GREATER_OR_EQUAL(day, 1, ());
  ASSERT_LESS_OR_EQUAL(day, DaysOfMonth(year, month), ());

  tm t = {};
  t.tm_year = year - 1900;
  t.tm_mon = month - 1;
  t.tm_mday = day;
  t.tm_hour = hour;
  t.tm_min = min;
  t.tm_sec = sec;
  return TimeGM(t);
}
} // namespace base