AXForum  
Вернуться   AXForum > Прочие обсуждения > Курилка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.03.2007, 17:53   #1  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Post
Я постарался улучшить код, избавив его от указанных недостатков.
X++:
static container now()
{
    #define.KernelDLL('KERNEL32')
    #define.SizeOfStructure(8*4)

    Binary      systemtime = new Binary(#SizeOfStructure);
    DLL         _DLL          = new DLL(#KernelDLL);
    DLLFunction _GetSystemTime = new DLLFunction(_DLL, 'GetLocalTime');

    int         wYear;
    int         wMonth;
    int         wDayOfWeek;
    int         wDay;
    int         wHour;
    int         wMinute;
    int         wSecond;
    int         wMilliseconds;

    date        resDate;
    TimeOfDay   resTime;


    _GetSystemTime.arg(ExtTypes::Pointer);

    _GetSystemTime.call(systemtime);

    wYear   = systemtime.word(0);
    wMonth  = systemtime.word(2);
    wDay    = systemtime.word(6);

    resDate = mkdate(wDay, wMonth, wYear);

    wHour   = systemtime.word(8);
    wMinute = systemtime.word(10);
    wSecond = systemtime.word(12);

    resTime = wSecond + (wMinute + wHour*60)*60;

    info(strFmt("%1 %2", resDate, time2str(resTime, -1, -1)));

    return [resDate, resTime];
}
К сожалению, он возвращает время Coordinated Universal Time (UTC), т.е. для Гринвичского меридиана. Буду рад, если кто-нибудь продолжит работу и скорректирует код с учетом временной зоны.

P.S. Исправил: надо было успользовать функцию GetLocalTime вместо GetSystemTime.

Как нетрудно видеть, код в итоге стал не менее компактным, зато более доступным и понятным.

Последний раз редактировалось EVGL; 06.03.2007 в 18:03.
Теги
axapta, cil, d365fo, guid, rasset, uuid, uuidv7, баг

 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:53.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.