I'm trying to create opening hours like this website. This one looks like it was done in tables, but what's the most efficient/conventional way of achieving the same thing in CSS?
The "most efficient/conventional way of achieving the same thing in CSS" is the same as it is done now. It is tabular data and therefore tables are used.