I tend to do it on a Saturday or Sunday, if going to shops myself. But I try, if possible, to do internet shopping as frequently as possible (I average about once a month, but have done the last 4 weeks and hope to put order in on Monday for delivery the following Monday as we are away in the meantime).
I do work from a list as well. I have a running list on the fridge of things that either are about to, or more likely have already, run out and need replacing. Or that we've suddenly realized we want (so DH is back to wheetabix next shop, for winter, for example).
I have a look at the diary to see commitments the following week - how many nights of training, is DH or I out for work things or travelling away, are we expecting visitors? Have a quick look at the fridge, freezer and cupboards for obvious missing things, and what is there to menu plan with. Make a dinner plan for the week, and add anything needed for that onto the shopping list. Check school/work lunches needs, and what fruit is being eaten at the moment. Finish the list, bring it to work, and do the food shopping ordering on my lunchbreak - or else finish the list, bring it to supermarket and lug everthing home.
I normally try and book the delivery slot for 6-7pm on Friday nights, as we are home from work, we'll have fresh bread for slightly relaxing Saturday breakfast, and I have a better chance of getting ahead on mid-week dinners over the weekend. Whereas Saturdays are ok for delivery, but we may be out and about so I prefer not getting tied down to having to be home. And I have found that Thursday nights are busy (homework, worn out from the week) so I have to get it all done and put away when I may not be in the mood to, (Fridays I can ignore a few bits until Sat) and also that the "use by" dates - while still in date - are often a few days shorter than Friday ones, as Fridays tend to be delivery/stocking up days to the supermarket for weekend shopping needs, and that makes a difference when I am buying say Lamb chops for Tuesday night's dinner.