//	Darkstar Engine  (c) UnderWorld Interactive Studio (all coding by Svarog    2008)
//
//      Данный файл является частью Darkstar Engine. Любое использование кода файла
//      без согласия компании, является нарушением закона об авторском праве (в слу-
//      чае если не оговорено обратное).
//
//      Имя файла: systemTime.inl
//      Краткое описание: работа с временем и датой файлов
//

namespace ker
{
	inline SystemTime::SystemTime()
	{
		year = day = month = second = minute = millisecond = hour = 0;
	};

	inline SystemTime::SystemTime(const FILETIME& time)
	{
		shared_ptr<SYSTEMTIME> stime(new SYSTEMTIME);
		FileTimeToSystemTime(&time, stime.get());
		shared_ptr<SYSTEMTIME> slocal(new SYSTEMTIME);
		TIME_ZONE_INFORMATION time_zone;
		GetTimeZoneInformation(&time_zone);
		SystemTimeToTzSpecificLocalTime(&time_zone, stime.get(), slocal.get());
		year = slocal->wYear;
		month = slocal->wMonth;
		day = slocal->wDay;
		hour = slocal->wHour;
		minute = slocal->wMinute;
		second = slocal->wSecond;
		millisecond = slocal->wMilliseconds;
	};


	inline SystemTime::~SystemTime()
	{

	};

	inline const unsigned short SystemTime::getYear() const
	{
		return year;
	};

	inline const unsigned short SystemTime::getMonth() const
	{
		return month;
	};

	inline const unsigned short SystemTime::getDay() const
	{
		return day;
	};

	inline const unsigned short SystemTime::getHour() const
	{
		return hour;
	};

	inline const unsigned short SystemTime::getMinute() const
	{
		return minute;
	};

	inline const unsigned short SystemTime::getSecond() const
	{
		return second;
	};

	inline const unsigned short SystemTime::getMillisecond() const
	{
		return millisecond;
	};

	inline bool SystemTime::operator <(const SystemTime& time) const
	{
		if(year != time.getYear())
			return year < time.getYear();
		if(month != time.getMonth())
			return month < time.getMonth();
		if(day != time.getDay())
			return day < time.getDay();
		if(hour != time.getHour())
			return hour < time.getHour();
		if(minute != time.getMinute())
			return minute < time.getMinute();
		if(second != time.getSecond())
			return second < time.getSecond();
		if(millisecond != time.getMillisecond())
			return millisecond < time.getMillisecond();
		return false;
	};
};
		