Это немного грязный, но это просто и хорошо работает:
Сначала решите, что интервалы должны быть разрешены между клещами. Из-за сумасшествия системы времени (база 10? Base 60?, Как долго это месяц?) Нет никакого особого алгоритма для генерации этого списка - просто выберите естественные интервалы, которые люди знакомы и жестко закодируют в вашу программу:
...etc...
every 0.1 second
every 1 second
every 5 seconds
every 15 seconds
every 1 minute
every 5 minutes
every 15 minutes
every 1 hours
every 2 hours
every 4 hours
every 8 hours
every day, midnight
every 7 days, midnight
every month start
every quarter start
every year start
every 10 years
...etc...
Затем дал определенную ширину оси, и определенный интервал времени для отображения, просто перебирать список расчетливый, сколько клещей было бы производить и как близко тики бы в пикселях если бы вы использовали эту шкалу. Этот расчет должен выполняться с использованием простого деления. Выберите масштаб с наибольшим количеством тиков с условием, что тики не будут слишком близко. Этот наивный алгоритм должен давать вполне адекватную производительность, но вы можете использовать бинарный поиск, а не итерировать по всему списку, если хотите его оптимизировать (возможно, не стоит прилагать никаких усилий).
Это немного раздражает, но я не знаю лучшего способа, если вы не найдете какую-нибудь библиотеку, которая сделает это за вас. Я не знаю ни одной библиотеки, которая предлагает эту функцию, но должно быть много проектов с открытым исходным кодом, которые делают что-то похожее, чтобы вы могли получить код, если вы не хотите писать это самостоятельно.
ли проблема с моим вторым ответом? –
нет, у меня просто не было много времени в последние несколько дней, чтобы проверить его. Прости. на самом деле это не работает, потому что я не понимаю один параметр. я позабочусь об этом позже. благодаря! – clamp