There are a few approaches.
You could have a check within the service that checks the time and registers for location updates when it is within those times, and unregisters when after. This would provide better battery consumption as you say.
Or depending on the context you could use the alarm manager and calculate the time you would like to launch your service, and you could do this when the android boots / logs in. See here for an example.
Also, consider using the 'location poller' library, as that might meet your needs as it uses WakeLocks efficiently, so is battery aware built in.