Too few arguments for printf() [closed]

printf( __( '%1$s – %2$s', 'erudite' ), the_date( '', '', '', true ) )

expects two strings; you’ve only offered one (the_date()). If you want to use two strings, you have to give it two strings.

If you want printf() to use the_time() and $previousday, you need to tell it so:

printf( __( '%1$s – %2$s', 'erudite' ), get_the_time(), $previousday );

for instance.