What this function does is it checks for a headline that matches the current date and jumps to it when it finds. I'm assuming recent entries are placed at the beginning of the file. If that's not the case you may want to start parsing from the end of the file.

(defun datetree-jump () (let ((point (point))) (catch 'found (goto-char (point-min)) (while (outline-next-heading) (let* ((hl (org-element-at-point)) (title (org-element-property :raw-value hl))) (when (string= title (format-time-string "%F %A")) (org-show-context) (setq point (point)) (throw 'found t))))) (goto-char point)))

Here's a more thorough attempt at solving both parts of your problem. The first function returns a list of fallback dates starting from today (defaults to one year). The second function jumps to the first headline in the buffer matching any of the fallback dates.