... although returning a struct tm (which is moderately large) is perhaps sub-optimal; taking a struct tm* parameter and filling the struct might be better.