Is there any API/data available to detect time zone depending on the provided city/country name? Like, if I pass a city name, I get the current time zone in this city, if I pass a country name, I get the current time zone in this country's capital.
Yes, there is such thing in PHP. It's named GeoIP - and there is a geoip_time_zone_by_country_and_region() function for getting timezone. This works for country/region - so to find timezone by city you will have to link cities and countries. I think it's a task of your application - since in different countries there could be cities with same names (and so it's up to you to decide which country is it and pass it to GeoIP API)