コード例 #1
0
ファイル: date.lib.php プロジェクト: ADDAdev/Dolibarr
/**
 *	Function to return number of working days (and text of units) between two dates (working days)
 *
 *	@param	   	int			$timestampStart     Timestamp for start date (date must be UTC to avoid calculation errors)
 *	@param	   	int			$timestampEnd       Timestamp for end date (date must be UTC to avoid calculation errors)
 *	@param     	int			$inhour             0: return number of days, 1: return number of hours
 *	@param		int			$lastday            We include last day, 0: no, 1:yes
 *  @param		int			$halfday			Tag to define half day when holiday start and end
 *  @param      string		$country_code       Country code (company country code if not defined)
 *	@return    	int								Number of days or hours
 */
function num_open_day($timestampStart, $timestampEnd, $inhour = 0, $lastday = 0, $halfday = 0, $country_code = '')
{
    global $langs, $mysoc;
    if (empty($country_code)) {
        $country_code = $mysoc->country_code;
    }
    dol_syslog('num_open_day timestampStart=' . $timestampStart . ' timestampEnd=' . $timestampEnd . ' bit=' . $lastday . ' country_code=' . $country_code);
    // Check parameters
    if (!is_int($timestampStart) && !is_float($timestampStart)) {
        return 'ErrorBadParameter_num_open_day';
    }
    if (!is_int($timestampEnd) && !is_float($timestampEnd)) {
        return 'ErrorBadParameter_num_open_day';
    }
    //print 'num_open_day timestampStart='.$timestampStart.' timestampEnd='.$timestampEnd.' bit='.$lastday;
    if ($timestampStart < $timestampEnd) {
        $numdays = num_between_day($timestampStart, $timestampEnd, $lastday);
        $numholidays = num_public_holiday($timestampStart, $timestampEnd, $country_code);
        $nbOpenDay = $numdays - $numholidays;
        $nbOpenDay .= " " . $langs->trans("Days");
        if ($inhour == 1 && $nbOpenDay <= 3) {
            $nbOpenDay = $nbOpenDay * 24 . $langs->trans("HourShort");
        }
        return $nbOpenDay - ($inhour == 1 ? 12 : 0.5) * abs($halfday);
    } elseif ($timestampStart == $timestampEnd) {
        $nbOpenDay = $lastday;
        if ($inhour == 1) {
            $nbOpenDay = $nbOpenDay * 24 . $langs->trans("HourShort");
        }
        return $nbOpenDay - ($inhour == 1 ? 12 : 0.5) * abs($halfday);
    } else {
        return $langs->trans("Error");
    }
}
コード例 #2
0
ファイル: date.lib.php プロジェクト: nrjacker4/crm-php
/**
 *	Fonction retournant le nombre de jour entre deux dates sans les jours feries (jours ouvres)
 *
 *	@param	   timestamp	$timestampStart     Timestamp de debut
 *	@param	   timestamp	$timestampEnd       Timestamp de fin
 *	@param     int			$inhour             0: sort le nombre de jour , 1: sort le nombre d'heure (72 max)
 *	@param     int			$lastday            On prend en compte le dernier jour, 0: non, 1:oui
 *	@return    int								Nombre de jours ou d'heures
 */
function num_open_day($timestampStart, $timestampEnd, $inhour = 0, $lastday = 0)
{
    global $langs;
    if ($timestampStart < $timestampEnd) {
        $bit = 0;
        if ($lastday == 1) {
            $bit = 1;
        }
        $nbOpenDay = num_between_day($timestampStart, $timestampEnd, $bit) - num_public_holiday($timestampStart, $timestampEnd);
        $nbOpenDay .= " " . $langs->trans("Days");
        if ($inhour == 1 && $nbOpenDay <= 3) {
            $nbOpenDay = $nbOpenDay * 24 . $langs->trans("HourShort");
        }
        return $nbOpenDay;
    } else {
        return $langs->trans("Error");
    }
}
コード例 #3
0
ファイル: DateLibTest.php プロジェクト: Samara94/dolibarr
 /**
  * testNumPublicHoliday
  *
  * @return	void
  */
 public function testNumPublicHoliday()
 {
     global $conf, $user, $langs, $db;
     $conf = $this->savconf;
     $user = $this->savuser;
     $langs = $this->savlangs;
     $db = $this->savdb;
     // With same hours - Tuesday/Wednesday jan 2013
     $date1 = dol_mktime(0, 0, 0, 1, 1, 2013);
     $date2 = dol_mktime(0, 0, 0, 1, 2, 2013);
     $result = num_public_holiday($date1, $date2, 'FR', 1);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals(1, $result, 'NumPublicHoliday for Tuesday/Wednesday jan 2013 for FR');
     // 1 closed days
     $result = num_public_holiday($date1, $date2, 'XX', 1);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals(0, $result, 'NumPublicHoliday for Tuesday/Wednesday jan 2013 for XX');
     // no closed days (country unknown)
     // With same hours - Friday/Sunday jan 2013
     $date1 = dol_mktime(0, 0, 0, 1, 4, 2013);
     $date2 = dol_mktime(0, 0, 0, 1, 6, 2013);
     $result = num_public_holiday($date1, $date2, 'FR', 1);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals(2, $result, 'NumPublicHoliday for FR');
     // 1 opened day, 2 closed days
     $result = num_public_holiday($date1, $date2, 'XX', 1);
     print __METHOD__ . " result=" . $result . "\n";
     $this->assertEquals(2, $result, 'NumPublicHoliday for XX');
     // 1 opened day, 2 closed days (even if country unknown)
 }