Что такое хорошая структура данных для периодических или повторяющихся дат?

Мне очень понравился код @ brettdj, но потом я обнаружил, что когда я добавил дополнительный код для редактирования копии, он переписал мой оригинальный лист. Я подправил его ответ так, чтобы дальнейший код, указанный на ws1, повлиял на новый лист, а не на оригинал.

Sub Test()
    Dim ws1 as Worksheet
    ThisWorkbook.Worksheets("Master").Copy
    Set ws1 = ThisWorkbook.Worksheets("Master (2)")
End Sub
10
задан raven 29 April 2012 в 16:31
поделиться

3 ответа

Используйте библиотеку реализации iCalendar , например эти: ruby ​​, java , php , python , .net и java , а затем добавьте поддержку для вычисления особых дат.

6
ответ дан 4 December 2019 в 03:17
поделиться

Со всеми этими вариациями в способе указания повторения, Я бы уклонился от реализации единой структуры данных, чтобы учесть все 5 сценариев.

Вместо этого я бы (и в предыдущем проекте) построил бы простые структуры, которые обращаются к каждому типу повторения. Вы можете обернуть их все так, чтобы это было похоже на единую структуру данных, но под капотом они могли делать все, что захотят. Реализовав интерфейс, я смог одинаково обрабатывать каждый тип повторения, так что это выглядело как структура данных, подходящая для всех. Я мог бы запросить у любого экземпляра все даты повторения в течение определенного периода времени, и это помогло.

Я также хотел бы узнать больше о том, как эти даты должны использоваться, прежде чем остановиться на конкретной реализации.

Вы можете обернуть их все так, чтобы это было похоже на единую структуру данных, но под капотом они могли делать все, что захотят. Реализовав интерфейс, я смог одинаково обрабатывать каждый тип повторения, так что это выглядело как структура данных, подходящая для всех. Я мог бы запросить у любого экземпляра все даты повторения в течение определенного периода времени, и это помогло.

Я также хотел бы узнать больше о том, как эти даты должны использоваться, прежде чем остановиться на конкретной реализации.

Вы можете обернуть их все так, чтобы это было похоже на единую структуру данных, но под капотом они могли делать все, что захотят. Реализовав интерфейс, я смог одинаково обрабатывать каждый тип повторения, так что это выглядело как структура данных, подходящая для всех. Я мог бы запросить у любого экземпляра все даты повторения в течение определенного периода времени, и это помогло.

Я также хотел бы узнать больше о том, как эти даты должны использоваться, прежде чем остановиться на конкретной реализации.

0
ответ дан 4 December 2019 в 03:17
поделиться

Если вы хотите на практике создать структуру данных, я бы порекомендовал хэш-таблицу (где праздники или события являются ключами с появлением новой даты в качестве значения), если есть кратность каждого появления, которое вы может хэшировать значение, которое находит раздел в связанном списке, который затем содержит список всех вхождений (это сделало бы поиск, а также вставку, выполненную в O (1)).

0
ответ дан 4 December 2019 в 03:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: