StrToTime() - что возвращает, если даты такой не существует?

 

-1? Например, StrToTime("2007.02.30")? Или StrToTime("2004.15.49")? Спасибо.

P.S. Удивительное - рядом:

StrToTime("2007.02.30") = 1172793600 - хотя 30 февраля не существует.

StrToTime("2004.15.49") = 1113782400 !!

А как же мне отсеивать "неправильные" даты, если я их сам программно формирую?

P.P.S. Тем не менее:

Print( TimeDayOfWeek(D'2004.15.49') );  

выдает правильную реакцию: '2004.15.49' - wrong date . И это радует!

P.P.P.S. Рано обрадовался: строка

Print( TimeDayOfWeek(D'2007.02.30') );
не выдала  никаких предупреждений, а при исполнении выдала 5 (пятница)... В принципе так оно и должно было быть, так как 28.02. 07 - среда :)

 
Mathemat:

-1? Например, StrToTime("2007.02.30")? Или StrToTime("2004.15.49")? Спасибо.

P.S. Удивительное - рядом:

StrToTime("2007.02.30") = 1172793600 - хотя 30 февраля не существует.

StrToTime("2004.15.49") = 1113782400 !!

А как же мне отсеивать "неправильные" даты, если я их сам программно формирую?

P.P.S. Тем не менее:

Print( TimeDayOfWeek(D'2004.15.49') );  

выдает правильную реакцию: '2004.15.49' - wrong date . И это радует!

P.P.P.S. Рано обрадовался: строка

Print( TimeDayOfWeek(D'2007.02.30') );
не выдала никаких предупреждений, а при исполнении выдала 5 (пятница). .. В принципе так оно и должно было быть, так как 28.02. 07 - среда :)


Добрый день!

разработчикам поправить это в очередном релизе не сложно будет, еще учесть високосные годы 29.02.YYYY

грустно конечно, но дату можно проверить и через системные функции WINDOWS

 

Спасибо, что нашли ошибку. Исправим.

 
stringo:

Спасибо, что нашли ошибку. Исправим.


это ж не ошибка, это маленький удобный люк
 
Mathemat
писал (а):

А как же мне отсеивать "неправильные" даты, если я их сам программно формирую?

)))))

зачем тебе неправильные? формируй правильные!

#define D 5184000
это 1 день...
 
А день у тебя прям библейский, Tovaroved, 1440 часов. Ну а насчет неправильных дат это случайно вышло, в принципе мне проверять их "валидность" уже не надо. И все же иногда приятно обнаружить то, на что реагирует сам stringo...

P.S. Tovaroved, представь ситуацию: скачал с forexite.com Телепортом минутки за несколько лет - в формате для Метастока. Получилось, блин, ни много ни мало, а полторы тысячи зиповских архивов. Архивы распаковал в отдельный каталог, получились те же 1500 текстовых файлов. А теперь мне их надо обработать, так как в каждом - минутки по всем инструментам, котируемым на forexite.com. А мне-то нужен только один - рыжая бестия. Теперь, чтобы собрать все это вместе в историю минуток рыжей, надо найти способ обработать 1500 файлов, причем в хронологическом порядке. Увы, в MQL4 нет возможности пакетной обработки файлов. Вот и генерю имя файла в двойном цикле. А имя (это почти дата) может оказаться неправильным...
 
Mathemat:
А день у тебя прям библейский, Tovaroved, 1440 часов. Ну а насчет неправильных дат это случайно вышло, в принципе мне проверять их "валидность" уже не надо. И все же иногда приятно обнаружить то, на что реагирует сам stringo...
В реале Слава еще и приятен в общении.
 
Нашел способ перечисления последовательных дат не в двойном, а в одинарном цикле. Переменные curDay и nextDay - в формате "YYYY.MM.DD". Неправильные даты не получаются :)
string nextDay( string curDay )
{
   string res = TimeToStr( StrToTime( curDay ) + 1440 * 60, TIME_DATE );
   return( res );
}
А вот и вызов функции в цикле:
int start()
{
   string sDate = "2004.02.26";
   for( int i = 0; i < 100; i++ ) 
   {
      sDate = nextDay( sDate );
      Print( sDate );
   }   
   return( 0 );
}
 
P.S. Собрал историю минуток рыжей с начала 2005 с forexite.com. Уже приготовился обрабатывать строки, но решил проверить, а не пойдет ли он в таком виде сразу в архив котировок. Оказалось, не зря проверил: файл в формате Метастока распознается при импорте в историю. Решпект, разработчики!
 

А что с объёмами?

 
И объемы понимает.
Причина обращения: