//////////////////////////////////////////////////////////////
//
// YURAZ yzh mail ru
//
// ôóíêöèÿ âåðíåò
// true - ëåòíåå âðåìÿ
// false - çèìíåå âðåìÿ
//
// ïåðåõîä íà çèìíåå â íî÷ü ïîñëåäíåãî âîñêðåñåíüÿ ÎÊÒßÁÐß
// ïåðåõîä íà ëåòíåå â íî÷ü ïîñëåäíåãî âîñêðåñåíüÿ ÌÀÐÒÀ
//
bool TimeWinter(datetime dt)
{
int i;
if ( TimeMonth(dt) >= 11 || TimeMonth(dt) <= 2 ) // ÇÈÌÀ
{
return(false); // çèìíåå
}
if ( TimeMonth(dt) >= 4 && TimeMonth(dt) <= 9) // ËÅÒÎ
{
return(true); // Ëåòî
}
// äåëàòü íå÷åãî èäåì îïðåäåëÿòü
datetime tSeek;
string sTIM;
if ( TimeMonth(dt) == 10 ) // îêòÿáðü
{
if ( TimeDay(dt) >= 20 ) // íî÷üþ â ïîñëåäåå âîñêðåñåíüå îêòÿáðÿ - ïåðåõîä íà çèìíåå âðåìÿ
{
tSeek = StrToTime( StringTrimRight(StringTrimLeft(DoubleToStr(TimeYear(dt),0)))+".10.31"); // óñòàíîâèì ïîñëåäíèé äåíü îêòÿáðÿ
// èùåì ïåðâîå âîñêðåñåíüå ñ êîíöà
for ( i = 31; i >= 20; i-- )
{
if ( TimeDayOfWeek(tSeek) == 0 )
{
break; // íàøëè ïîñëåäíåå âîñêðåñåíüíå îêòÿáðÿ
}
tSeek = tSeek - 86400; // åùå îäèí äåíü
}
if ( dt >= tSeek ) // óæå çèìíåå âðåìÿ
{
return(false); // äà çèìà
}
}
return(true);
}
if ( TimeMonth(dt) == 3 ) // ìàðò
{
if ( TimeDay(dt) >= 20 ) // íî÷üþ â ïîñëåäåå âîñêðåñåíüå ÌÀÐÒÀ - ïåðåõîä íà ËÅÒÍÅÅ âðåìÿ
{
tSeek = StrToTime( StringTrimRight(StringTrimLeft(DoubleToStr(TimeYear(dt),0)))+".03.31"); // óñòàíîâèì ïîñëåäíèé äåíü ìàðòà
for ( i = 31; i >= 20; i-- )
{
if ( TimeDayOfWeek(tSeek) == 0 ) // èùåì ïåðâîå âîñêðåñåíüå ñ êîíöà
{
break; // íàøëè ïîñëåäíåå âîñêðåñåíüíå ìàðòà
}
tSeek = tSeek - 86400; // åùå îäèí äåíü
}
if ( dt >= tSeek ) // óæå ëåòíåå âðåìÿ
{
return(true); // óæå ëåòî
}
}
return(false);
}
}
Comments