Finding the timing of blocks, afterwards?
I've tested blocktrail.com and they do provide an arrival time. Any provider will only have so much historical data though.

If you are only interested in data moving forward you could run your own bitcoin node(s) and use -blocknotify= command switch to record your own time(s).

You would need to consider when this notification is triggered.  Normally would be after the block is validated and longest chain is updated, not immediately when the node sees it.

Output from BlockTrail

{"hash":"000000000000000015aab005b28a326ade60f07515c33517ea5cb598f28fb7ea","height":320000,"block_time":"2014-09-10T13:55:18+0000","arrival_time":"2014-09-10T13:55:47+0000","nonce":2145106612,"difficulty":27428630902,"merkleroot":"57c6d11085df633a848eecf78befcdbbab58c2830ca380d4089d5013ab53d0df","is_orphan":false,"prev_block":"000000000000000021ecc2772de2ce57c6bd327c4ceaea52a0ecd70548b8ca41","next_block":"00000000000000001bbfee4521419de4f79c19580027b00f9739ee7b2f0b5c57","byte_size":227086,"confirmations":71045,"transactions":357,"value":262417274672,"miningpool_name":"DiscusFish \/ F2Pool","miningpool_url":"http:\/\/www.f2pool.com","miningpool_slug":"discusfish"}