The built-in `calendar-mode` and `diary-mode` have their limitations. However, `diary-mode` is designed to present a span of time if so desired. Load the `diary-lib` library with `M-x eval-expression RET (require 'diary-lib) RET` and then type `M-x describe-function RET diary-list-entries RET` to read about it. For more advanced searching and calendaring abilities, take a look at `org-mode` / `org-agenda-mode`, and/or `calfw`. A quick grep of the Emacs built-in code revealed that the `cal-tex` library is designed to work with the diary feature, if you use TeX/LaTeX that is. See also the function `diary`, which has a doc-string that states as follows: "Generate the diary window for ARG days starting with the current date. If no argument is provided, the number of days of diary entries is governed by the variable `diary-number-of-entries'. A value of ARG less than 1 does nothing. This function is suitable for execution in an init file." And, of course, the above doc-string mentioned that the variable `diary-number-of-entries` is customizable. The function `diary-view-entries` also looks interesting, so check that out too: "Prepare and display a buffer with diary entries. Searches the file named in `diary-file' for entries that match ARG days starting with the date indicated by the cursor position in the displayed three-month calendar."