C_local2Solar {solaR}R Documentation

Local time, mean solar time and UTC time zone.


The function local2Solar converts the time zone of a POSIXct object to the mean solar time and set its time zone to UTC as a synonym of mean solar time. It includes two corrections: the difference of longitudes between the location and the time zone, and the daylight saving time.

The function CBIND combines several objects (zoo, data.frame or matrix) preserving the index of the first of them or asigning a new one with the index argument.

The function lonHH calculates the longitude (radians) of a time zone.


local2Solar(x, lon = NULL)
CBIND(..., index = NULL)



a POSIXct object


A numeric value of the longitude (degrees) of the location. If lon = NULL (default), this value is assumed to be equal to the longitude of the time zone of x, so only the daylight saving time correction (if needed) is included.


A set of zoo objects.


A POSIXct object, the index of zoo object constructed with CBIND.


A character, a time zone as documented in https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.


Since the result of local2Solar is the mean solar time, the Equation of Time correction is not calculated with this function. The fSolI function includes this correction if desired.

If the index argument of CBIND is NULL (default) the first object of ... must be a zoo object.


The function local2Solar produces a POSIXct object with its time zone set to UTC.

The function CBIND produces a zoo object.

The function lonHH gives a numeric value.


It is important to note that the solaR package sets the system time zone to UTC with Sys.setenv(TZ = 'UTC'). Every zoo object created by the package will have an index with this time zone and will be supposed to be mean solar time.


Oscar Perpiñán Lamigueiro.



t.local <- as.POSIXct("2006-01-08 10:07:52", tz = 'Europe/Madrid')

##The local time zone and the location have the same longitude (15 degrees)
##But Madrid is at lon = -3
local2Solar(t.local, lon = -3)

##Daylight saving time
t.local.dst <- as.POSIXct("2006-07-08 10:07:52", tz = 'Europe/Madrid')

local2Solar(t.local.dst, lon = -3)

## Not run: 
##Extracted from an example of calcG0
##La Ola, Lanai
##Latitude: 20.76685o North
##Longitude: 156.92291o West
##Time Zone: -10.0

NRELurl <- 'http://goo.gl/fFEBN'

dat <- read.table(NRELurl, header = TRUE, sep = ',')
names(dat) <- c('date', 'hour', 'G0', 'B', 'D0', 'Ta')

##B is direct normal. We need direct horizontal.
dat$B0 <- dat$G0-dat$D0

##The datalogger program runs using Greenwich Mean Time (GMT),
##data is converted to Hawaiin Standard Time (HST) after data collection
idxLocal <- with(dat, as.POSIXct(paste(date, hour), format = '%m/%d/%Y %H:%M', tz = 'HST'))
idx <- local2Solar(idxLocal, lon = -156.9339)

## End(Not run)

[Package solaR version 0.46 Index]