One of essential components of public transport systems is to provide travel time estimates for a better travel experience. Based on these estimates, travelers can plan their departure time to meet their target time of arrival. Most of existing work has been focused on estimation on passenger riding time, which is relatively stable. However, a significant portion of time for a subway trip is spent on unstable walking and waiting. As a result, the work solely based on riding times underestimates the actual travel times. To fill the gap, we analyze travel data from automated ticketing systems, which are collected from a large group of passengers in a cost-effective way. We estimate each component (i.e., walking, waiting, and riding) of the travel time using tap-in and tap-out records of these passengers, by a novel travel time decomposition. We evaluate the performance of our travel time decomposition method based on large-scale real-world smart card data from more than 2 million users from Chinese city Shenzhen with 15 million smart card records. The results show that our estimation has an average estimation error of 8% on average and outperforms a baseline approach by 38%. Based on our travel time estimates, we further propose a practical application: Digital advertising based on up-to-date travel demand.