Amibroker: конвертировать число даты из datenum() в строку

Функция амиброкера 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.

Другие вопросы по тегам