Некорректная работа функций получения даты и времени?

Автор Тема: Некорректная работа функций получения даты и времени?  (Прочитано 7765 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Алексей КуликАвтор темы

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Есть некоторый функционал, завязанный на получение текущей даты и времени. На AutoCAD 2018x64 и AutoCAD 2019x64 стандартнейшие функции перестали корректно работать.
Во-первых, получение миллисекунд запросто может оказаться некорректным:
Код - Auto/Visual Lisp [Выбрать]
  1. (menucmd "M=$(edtime,$(getvar,date),yyyymodd-hhmmssMSEC)")
В качестве миллисекунд в AutoCAD 2019 все время возвращает нули. Мне слабо верится, что я вручную настолько точно повторно вызываю функцию...
Далее. Если не повезет и запрос времени и даты будет выполняться "под конец минуты", можно получить следующее:
Код - Auto/Visual Lisp [Выбрать]
  1. (rtos (rem(getvar 'cdate)1) 2 30)
  2. ".1516999974846839"
Это как - 99 секунд?
И, наконец, последнее - такое ощущение, что прямой запрос к cdate срабатывает "от балды":
Код - Auto/Visual Lisp [Выбрать]
  1. (rtos (rem (getvar "cdate") 1) 2 16)
  2. (repeat 100 (vl-catch-all-apply (function (lambda () (sqrt (getvar "cdate"))))))
  3. (rtos (rem (getvar "cdate") 1) 2 16)
Возвращает
Код - Auto/Visual Lisp [Выбрать]
  1. ".1528149992227554"
  2. 4492.34
  3. ".1528149992227554"
Попробовал более топорным способом:
Код - Auto/Visual Lisp [Выбрать]
  1. (repeat 20
  2.   ((lambda (/ d)
  3.      (princ)
  4.      (setq d (getvar "cdate"))
  5.      (princ (strcat "\n" (rtos (fix (* 1e12 (- d (fix d)))) 2)))
  6.      ) ;_ end of lambda
  7.    )
  8.   ) ;_ end of repeat
И очень сильно удивился результату:
Код - Auto/Visual Lisp [Выбрать]
  1. 152952000498
  2. 152952000498
  3. 152952000498
  4. 152952000498
  5. 152952000498
  6. 152952000498
  7. 152952000498
  8. 152952000498
  9. 152952000498
  10. 152952000498
  11. 152952000498
  12. 152952000498
  13. 152952000498
  14. 152952000498
  15. 152952000498
  16. 152952000498
  17. 152952000498
  18. 152952000498
  19. 152952000498
  20. 152952000498
Собственно вопрос - что я не учитываю?
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Отмечено как Решение Александр Ривилис 12-11-2018, 21:04:06

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Собственно вопрос - что я не учитываю?
Вот это:
https://help.autodesk.com/view/ACD/2019/ENU/index.html?guid=GUID-31FD1A96-C002-434E-8684-63D50BE0CF94
https://help.autodesk.com/view/ACD/2019/RUS/index.html?guid=GUID-31FD1A96-C002-434E-8684-63D50BE0CF94

Начиная отсюда:
Цитировать
Программы на основе AutoCAD 2017 и более поздней версии
CDATE, DATE и другие связанные с датой и временем системные переменные
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей КуликАвтор темы

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
О, спасибо! Вот чуял я, что проблема в моей невнимательности :)
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!