dolibarr  19.0.0-dev
Functions
date.lib.php File Reference

Set of function to manipulate dates. More...

Go to the source code of this file.

Functions

 get_tz_array ()
 Return an array with timezone values. More...
 
 getServerTimeZoneString ()
 Return server timezone string. More...
 
 getServerTimeZoneInt ($refgmtdate='now')
 Return server timezone int. More...
 
 dol_time_plus_duree ($time, $duration_value, $duration_unit, $ruleforendofmonth=0)
 Add a delay to a date. More...
 
 convertTime2Seconds ($iHours=0, $iMinutes=0, $iSeconds=0)
 Convert hours and minutes into seconds. More...
 
 convertSecondToTime ($iSecond, $format='all', $lengthOfDay=86400, $lengthOfWeek=7)
 Return, in clear text, value of a number of seconds in days, hours and minutes. More...
 
 convertDurationtoHour ($duration_value, $duration_unit)
 Convert duration to hour. More...
 
 dolSqlDateFilter ($datefield, $day_date, $month_date, $year_date, $excludefirstand=0, $gm=false)
 Generate a SQL string to make a filter into a range (for second of date until last second of date). More...
 
 dol_stringtotime ($string, $gm=1)
 Convert a string date into a GM Timestamps date Warning: YYYY-MM-DDTHH:MM:SS+02:00 (RFC3339) is not supported. More...
 
 dol_get_prev_day ($day, $month, $year)
 Return previous day. More...
 
 dol_get_next_day ($day, $month, $year)
 Return next day. More...
 
 dol_get_prev_month ($month, $year)
 Return previous month. More...
 
 dol_get_next_month ($month, $year)
 Return next month. More...
 
 dol_get_prev_week ($day, $week, $month, $year)
 Return previous week. More...
 
 dol_get_next_week ($day, $week, $month, $year)
 Return next week. More...
 
 dol_get_first_day ($year, $month=1, $gm=false)
 Return GMT time for first day of a month or year. More...
 
 dol_get_last_day ($year, $month=12, $gm=false)
 Return GMT time for last day of a month or year. More...
 
 dol_get_last_hour ($date, $gm='tzserver')
 Return GMT time for last hour of a given GMT date (it replaces hours, min and second part to 23:59:59) More...
 
 dol_get_first_hour ($date, $gm='tzserver')
 Return GMT time for first hour of a given GMT date (it removes hours, min and second part) More...
 
 dol_get_first_day_week ($day, $month, $year, $gm=false)
 Return first day of week for a date. More...
 
 getGMTEasterDatetime ($year)
 Return the easter day in GMT time. More...
 
 num_public_holiday ($timestampStart, $timestampEnd, $country_code='', $lastday=0, $includesaturday=-1, $includesunday=-1, $includefriday=-1, $includemonday=-1)
 Return the number of non working days including Friday, Saturday and Sunday (or not) between 2 dates in timestamp. More...
 
 num_between_day ($timestampStart, $timestampEnd, $lastday=0)
 Function to return number of days between two dates (date must be UTC date !) Example: 2012-01-01 2012-01-02 => 1 if lastday=0, 2 if lastday=1. More...
 
 num_open_day ($timestampStart, $timestampEnd, $inhour=0, $lastday=0, $halfday=0, $country_code='')
 Function to return number of working days (and text of units) between two dates (working days) More...
 
 monthArray ($outputlangs, $short=0)
 Return array of translated months or selected month. More...
 
 getWeekNumbersOfMonth ($month, $year)
 Return array of week numbers. More...
 
 getFirstDayOfEachWeek ($TWeek, $year)
 Return array of first day of weeks. More...
 
 getLastDayOfEachWeek ($TWeek, $year)
 Return array of last day of weeks. More...
 
 getWeekNumber ($day, $month, $year)
 Return week number. More...
 

Detailed Description

Set of function to manipulate dates.

Definition in file date.lib.php.

Function Documentation

◆ convertDurationtoHour()

convertDurationtoHour (   $duration_value,
  $duration_unit 
)

Convert duration to hour.

Parameters
int$duration_valueDuration value
int$duration_unitDuration unit
Returns
int $result

Definition at line 331 of file date.lib.php.

◆ convertSecondToTime()

convertSecondToTime (   $iSecond,
  $format = 'all',
  $lengthOfDay = 86400,
  $lengthOfWeek = 7 
)

Return, in clear text, value of a number of seconds in days, hours and minutes.

Can be used to show a duration.

Parameters
int$iSecondNumber of seconds
string$formatOutput format ('all': total delay days hour:min like "2 days 12:30",
  • 'allwithouthour': total delay days without hour part like "2 days",
  • 'allhourmin': total delay with format hours:min like "60:30",
  • 'allhourminsec': total delay with format hours:min:sec like "60:30:10",
  • 'allhour': total delay hours without min/sec like "60:30",
  • 'fullhour': total delay hour decimal like "60.5" for 60:30,
  • 'hour': only hours part "12",
  • 'min': only minutes part "30",
  • 'sec': only seconds part,
  • 'month': only month part,
  • 'year': only year part);
int$lengthOfDayLength of day (default 86400 seconds for 1 day, 28800 for 8 hour)
int$lengthOfWeekLength of week (default 7)
Returns
string Formated text of duration Example: 0 return 00:00, 3600 return 1:00, 86400 return 1d, 90000 return 1 Day 01:00
See also
convertTime2Seconds()

Definition at line 239 of file date.lib.php.

◆ convertTime2Seconds()

convertTime2Seconds (   $iHours = 0,
  $iMinutes = 0,
  $iSeconds = 0 
)

Convert hours and minutes into seconds.

Parameters
int$iHoursHours
int$iMinutesMinutes
int$iSecondsSeconds
Returns
int Time into seconds
See also
convertSecondToTime()

Definition at line 211 of file date.lib.php.

◆ dol_get_first_day()

dol_get_first_day (   $year,
  $month = 1,
  $gm = false 
)

Return GMT time for first day of a month or year.

Parameters
int$yearYear
int$monthMonth
mixed$gmFalse or 0 or 'tzserver' = Return date to compare with server TZ, True or 1 or 'gmt' to compare with GMT date. Example: dol_get_first_day(1970,1,false) will return -3600 with TZ+1, a dol_print_date on it will return 1970-01-01 00:00:00 Example: dol_get_first_day(1970,1,true) will return 0 whatever is TZ, a dol_print_date on it will return 1970-01-01 00:00:00
Returns
int Date for first day, '' if error

Definition at line 576 of file date.lib.php.

Referenced by ProjectStats\getAverageByMonth(), and TaskStats\getAverageByMonth().

◆ dol_get_first_day_week()

dol_get_first_day_week (   $day,
  $month,
  $year,
  $gm = false 
)

Return first day of week for a date.

First day of week may be monday if option MAIN_START_WEEK is 1.

Parameters
int$dayDay
int$monthMonth
int$yearYear
mixed$gmFalse or 0 or 'tzserver' = Return date to compare with server TZ, True or 1 or 'gmt' to compare with GMT date.
Returns
array year,month,week,first_day,first_month,first_year,prev_day,prev_month,prev_year

Definition at line 651 of file date.lib.php.

◆ dol_get_first_hour()

dol_get_first_hour (   $date,
  $gm = 'tzserver' 
)

Return GMT time for first hour of a given GMT date (it removes hours, min and second part)

Parameters
int$dateDate GMT
mixed$gmFalse or 0 or 'tzserver' = Return date to compare with server TZ, 'gmt' to compare with GMT date.
Returns
int Date for last hour of a given date

Definition at line 636 of file date.lib.php.

◆ dol_get_last_day()

dol_get_last_day (   $year,
  $month = 12,
  $gm = false 
)

Return GMT time for last day of a month or year.

Note: The timestamp contains last day and last hours (23:59:59)

Parameters
int$yearYear
int$monthMonth
mixed$gmFalse or 0 or 'tzserver' = Return date to compare with server TZ, True or 1 or 'gmt' to compare with GMT date.
Returns
int Date for first day, '' if error

Definition at line 595 of file date.lib.php.

Referenced by ProjectStats\getAverageByMonth(), and TaskStats\getAverageByMonth().

◆ dol_get_last_hour()

dol_get_last_hour (   $date,
  $gm = 'tzserver' 
)

Return GMT time for last hour of a given GMT date (it replaces hours, min and second part to 23:59:59)

Parameters
int$dateDate GMT
mixed$gmFalse or 0 or 'tzserver' = Return date to compare with server TZ, 'gmt' to compare with GMT date.
Returns
int Date for last hour of a given date

Definition at line 622 of file date.lib.php.

◆ dol_get_next_day()

dol_get_next_day (   $day,
  $month,
  $year 
)

Return next day.

Parameters
int$dayDay
int$monthMonth
int$yearYear
Returns
array Next year,month,day

Definition at line 480 of file date.lib.php.

◆ dol_get_next_month()

dol_get_next_month (   $month,
  $year 
)

Return next month.

Parameters
int$monthMonth
int$yearYear
Returns
array Next year,month

Definition at line 514 of file date.lib.php.

◆ dol_get_next_week()

dol_get_next_week (   $day,
  $week,
  $month,
  $year 
)

Return next week.

Parameters
int$dayDay
int$weekWeek
int$monthMonth
int$yearYear
Returns
array Next year,month,day

Definition at line 554 of file date.lib.php.

◆ dol_get_prev_day()

dol_get_prev_day (   $day,
  $month,
  $year 
)

Return previous day.

Parameters
int$dayDay
int$monthMonth
int$yearYear
Returns
array Previous year,month,day

Definition at line 464 of file date.lib.php.

◆ dol_get_prev_month()

dol_get_prev_month (   $month,
  $year 
)

Return previous month.

Parameters
int$monthMonth
int$yearYear
Returns
array Previous year,month

Definition at line 495 of file date.lib.php.

◆ dol_get_prev_week()

dol_get_prev_week (   $day,
  $week,
  $month,
  $year 
)

Return previous week.

Parameters
int$dayDay
int$weekWeek
int$monthMonth
int$yearYear
Returns
array Previous year,month,day

Definition at line 535 of file date.lib.php.

◆ dol_stringtotime()

dol_stringtotime (   $string,
  $gm = 1 
)

Convert a string date into a GM Timestamps date Warning: YYYY-MM-DDTHH:MM:SS+02:00 (RFC3339) is not supported.

If parameter gm is 1, we will use no TZ, if not we will use TZ of server, not the one inside string.

Parameters
string$stringDate in a string YYYYMMDD YYYYMMDDHHMMSS YYYYMMDDTHHMMSSZ YYYY-MM-DDTHH:MM:SSZ (RFC3339) DD/MM/YY or DD/MM/YYYY (deprecated) DD/MM/YY HH:MM:SS or DD/MM/YYYY HH:MM:SS (deprecated)
int | string$gm'gmt' or 1 =Input date is GM date, 'tzserver' or 0 =Input date is date using PHP server timezone
Returns
int Date as a timestamp 19700101020000 -> 7200 with gm=1 19700101000000 -> 0 with gm=1
See also
dol_print_date(), dol_mktime(), dol_getdate()

Definition at line 408 of file date.lib.php.

◆ dol_time_plus_duree()

dol_time_plus_duree (   $time,
  $duration_value,
  $duration_unit,
  $ruleforendofmonth = 0 
)

Add a delay to a date.

Parameters
int$timeDate timestamp (or string with format YYYY-MM-DD)
int$duration_valueValue of delay to add
int$duration_unitUnit of added delay (d, m, y, w, h, i)
int$ruleforendofmonthChange the behavior of PHP over data-interval, 0 or 1
Returns
int New timestamp
See also
convertSecondToTime(), convertTimeToSeconds()

Definition at line 122 of file date.lib.php.

Referenced by FactureRec\getNextDate(), and FactureFournisseurRec\getNextDate().

◆ dolSqlDateFilter()

dolSqlDateFilter (   $datefield,
  $day_date,
  $month_date,
  $year_date,
  $excludefirstand = 0,
  $gm = false 
)

Generate a SQL string to make a filter into a range (for second of date until last second of date).

This method allows to maje SQL request that will deal correctly the timezone of server.

Parameters
string$datefieldName of SQL field where apply sql date filter
int | string$day_dateDay date (Can be 0 or '' for filter on a month)
int | string$month_dateMonth date (Can be 0 or '' for filter on a year)
int | string$year_dateYear date
int$excludefirstandExclude first and
mixed$gmFalse or 0 or 'tzserver' = Input date fields are date info in the server TZ. True or 1 or 'gmt' = Input are date info in GMT TZ. Note: In database, dates are always fot the server TZ.
Returns
string $sqldate String with SQL filter

Definition at line 359 of file date.lib.php.

◆ get_tz_array()

get_tz_array ( )

Return an array with timezone values.

Returns
array Array with timezone values

Definition at line 34 of file date.lib.php.

◆ getFirstDayOfEachWeek()

getFirstDayOfEachWeek (   $TWeek,
  $year 
)

Return array of first day of weeks.

Parameters
array$TWeekarray of week numbers
int$yearYear number
Returns
array First day of week

Definition at line 1133 of file date.lib.php.

◆ getGMTEasterDatetime()

getGMTEasterDatetime (   $year)

Return the easter day in GMT time.

This function replaces easter_date() that returns a date in local TZ.

Parameters
int$yearYear
Returns
int GMT Date of easter day

Definition at line 721 of file date.lib.php.

◆ getLastDayOfEachWeek()

getLastDayOfEachWeek (   $TWeek,
  $year 
)

Return array of last day of weeks.

Parameters
array$TWeekarray of week numbers
int$yearYear number
Returns
array Last day of week

Definition at line 1151 of file date.lib.php.

◆ getServerTimeZoneInt()

getServerTimeZoneInt (   $refgmtdate = 'now')

Return server timezone int.

Parameters
string$refgmtdateReference period for timezone (timezone differs on winter and summer. May be 'now', 'winter' or 'summer')
Returns
float An offset in hour (+1 for Europe/Paris on winter and +2 for Europe/Paris on summer). Note some countries use half and even quarter hours.

Definition at line 83 of file date.lib.php.

References dol_now(), and dol_print_date().

◆ getServerTimeZoneString()

getServerTimeZoneString ( )

Return server timezone string.

Returns
string PHP server timezone string ('Europe/Paris')

Definition at line 72 of file date.lib.php.

◆ getWeekNumber()

getWeekNumber (   $day,
  $month,
  $year 
)

Return week number.

Parameters
int$dayDay number
int$monthMonth number
int$yearYear number
Returns
int Week number

Definition at line 1167 of file date.lib.php.

◆ getWeekNumbersOfMonth()

getWeekNumbersOfMonth (   $month,
  $year 
)

Return array of week numbers.

Parameters
int$monthMonth number
int$yearYear number
Returns
array Week numbers

Definition at line 1116 of file date.lib.php.

◆ monthArray()

monthArray (   $outputlangs,
  $short = 0 
)

Return array of translated months or selected month.

This replace old function monthArrayOrSelected.

Parameters
Translate$outputlangsObject langs
int$short0=Return long label, 1=Return short label
Returns
array Month string or array if selected < 0

Definition at line 1073 of file date.lib.php.

◆ num_between_day()

num_between_day (   $timestampStart,
  $timestampEnd,
  $lastday = 0 
)

Function to return number of days between two dates (date must be UTC date !) Example: 2012-01-01 2012-01-02 => 1 if lastday=0, 2 if lastday=1.

Parameters
int$timestampStartTimestamp start UTC
int$timestampEndTimestamp end UTC
int$lastdayLast day is included, 0: no, 1:yes
Returns
int Number of days @seealso num_public_holiday(), num_open_day()

Definition at line 989 of file date.lib.php.

◆ num_open_day()

num_open_day (   $timestampStart,
  $timestampEnd,
  $inhour = 0,
  $lastday = 0,
  $halfday = 0,
  $country_code = '' 
)

Function to return number of working days (and text of units) between two dates (working days)

Parameters
int$timestampStartTimestamp for start date (date must be UTC to avoid calculation errors)
int$timestampEndTimestamp for end date (date must be UTC to avoid calculation errors)
int$inhour0: return number of days, 1: return number of hours
int$lastdayWe include last day, 0: no, 1:yes
int$halfdayTag to define half day when holiday start and end
string$country_codeCountry code (company country code if not defined)
Returns
int|string Number of days or hours or string if error @seealso num_between_day(), num_public_holiday()

Definition at line 1015 of file date.lib.php.

◆ num_public_holiday()

num_public_holiday (   $timestampStart,
  $timestampEnd,
  $country_code = '',
  $lastday = 0,
  $includesaturday = -1,
  $includesunday = -1,
  $includefriday = -1,
  $includemonday = -1 
)

Return the number of non working days including Friday, Saturday and Sunday (or not) between 2 dates in timestamp.

Dates must be UTC with hour, min, sec to 0. Called by function num_open_day()

Parameters
int$timestampStartTimestamp start (UTC with hour, min, sec = 0)
int$timestampEndTimestamp end (UTC with hour, min, sec = 0)
string$country_codeCountry code
int$lastdayLast day is included, 0: no, 1:yes
int$includesaturdayInclude saturday as non working day (-1=use setup, 0=no, 1=yes)
int$includesundayInclude sunday as non working day (-1=use setup, 0=no, 1=yes)
int$includefridayInclude friday as non working day (-1=use setup, 0=no, 1=yes)
int$includemondayInclude monday as non working day (-1=use setup, 0=no, 1=yes)
Returns
int|string Number of non working days or error message string if error
See also
num_between_day(), num_open_day()

Definition at line 745 of file date.lib.php.