Amibroker: конвертировать число даты из datenum() в строку
Функция амиброкера datenum()
возвращает массив с датами, представленными в числах. Как преобразовать этот массив в строковый эквивалент?
У меня есть эта функция ниже, которая почти выполняет эту задачу, за исключением того, что поддерживается только 2000 год и позже. Как это исправить так, чтобы даты до 2000 года могли поддерживаться?
/*
Function changes DateNum ex:1040928 en String ddmmyyyy ex:28/09/2004 ( only > 2000 year )
*/
function sDate( nDate )
{
string = StrFormat( "%0.9g", nDate );
//extract string part
aa = StrLeft( string, 3 );
mm = StrMid( string, 3, 2 );
dd = StrRight( string, 2 );
//transform year en num
aa1 = StrToNum( aa ) + 1900; // ONLY CORRECT AFTER 2000
yyyy = NumToStr( aa1, 1, False );
result = yyyy + "-" + mm + "-" + dd;
return result;
}
2 ответа
Изменить строку
string = StrFormat( "%0.9g", nDate );
в
string = StrFormat( "%07.07g", nDate );
Вы можете легко конвертировать datenum в строку, используя встроенные функции afl, вот код, который нужно использовать:
DateNumberArray = DateTimeConvert( 2, DateNum() );
for ( i = 0; i < BarCount; i++ )
{
_TRACE( DateTimeToStr( DateNumberArray [i] ) );
}
2 - это код для преобразования из DateNum, см. Документацию DateTimeConvert.