If you are going to sort and flatten do it in one step:
from itertools import chain
srt_dates = sorted(chain.from_iterable(list1)
If you want to sort just by the time and not the date and time, you can use a lambda as the sort key:
from itertools import chain
from datetime import datetime
list1 = [(datetime(2015, 1, 2, 15, 0, 10), datetime(2015, 1, 2, 12, 0, 10)),
(datetime(2015, 1, 2, 14, 05, 10), datetime(2015, 1, 4, 11, 0, 10))]
srt_dates = sorted(chain.from_iterable(list1), key=lambda x: (x.hour, x.min, x.second))
print(srt_dates)
[datetime.datetime(2015, 1, 4, 11, 0, 10), datetime.datetime(2015, 1, 2, 12, 0, 10), datetime.datetime(2015, 1, 2, 14, 5, 10), datetime.datetime(2015, 1, 2, 15, 0, 10)]
The only way [i[j] for i in list1 for j in range(len(i))]
would give you a list of ints is if you have reassigned the name list1
to a list that that has iterables than contain ints.