I would look into how to control relays using the Arduino; then you could wire up 12VDC relays (standard Bosch or what-have-you), and switch them on/off using the Arduino - here's the "standard" referenced PDF:
You can find other things on the playground, too - plus googling "Arduino Relay" will bring up a host of examples as well. Basically, if you can blink an LED, you can control a relay. Instead of an LED, you switch on/off a transistor, which controls a larger voltage/current that drives the coil of the relay. Remember to install the diode across the coil of the relay properly (otherwise, you'll burn out your transistor), as well as use a proper resistor between the Arduino's pin and the base of the transistor. You need to drive a relay like this because the pins on an Arduino can not supply enough current to actuate a relay directly, and the resistor is needed to prevent too much current from being drawn; basically, if you don't do it this way, you'll fry your Arduino.
There exist boards that you can buy on Ebay and elsewhere that have all of this already implemented (relay, transistor, diode, resistor, etc); whether the relay included would be up to the task of driving the gate actuator though (ie, contact current rating on relay vs current needs of the gate actuator), I don't know - you'll have to research this. If not, you could use the smaller relay to drive a larger one...
As far as control/software - for light level control, you could either monitor the voltage of the solar panel; better, though, would be to use a simple LDR (light dependent/sensistive resistor - also know as CdS - cadmium sulphide - cells), and monitor that via a voltage divider on one of the analog input pins of the Arduino, similar to the following:
For timing instead, you could do it all in software; whether that would be accurate enough over the long term or not, I don't know; otherwise, you would need to look into using some form of real-time clock system. There are shields and other devices that you can hook up to the Arduino, and send simple commands or such to set the time, and read back the current time.
Hope this helps, or at least gets you thinking in a good direction! Good luck!