addDays($diff-2); return $day->toDateString(); } function formatExcelDateTime(float $timestamp): string { $today = new Carbon('1900-01-01'); $day = $today->addMilliseconds(intval($timestamp*DAY_TO_MILLI_SECONDS))->subDays(2); return $day->toDateTimeString(); } function diff($array1,$array2,string $identification,array $mapping,bool $intactDetached = false):array { $changes = [ 'attached' => [], 'detached' => [], 'updated' => [], ]; $map = []; foreach ($array2 as $item){ if (is_array($item))$map[$item[$identification]] = $item; else $map[$item->$identification] = json_decode($item,true); } foreach ($array1 as $item){ /** @var \stdClass|array|Model $item */ if (!is_array($item) && !is_subclass_of($item,Model::class))$item = (array)$item; if (!isset($map[$item[$mapping[$identification]]])){ $obj = []; foreach ($mapping as $column2=>$column1)$obj[$column2] = $item[$column1]; $changes['attached'][] = $obj;continue; } $sign = false; $obj = []; foreach ($mapping as $column2=>$column1){ $obj[$column2] = $item[$column1]; if ($map[$item[$mapping[$identification]]][$column2] != $item[$column1])$sign = true; } if ($sign)$changes['updated'][] = $obj; unset($map[$item[$mapping[$identification]]]); } if ($map){ if ($intactDetached){ foreach ($map as $item){ $obj = []; foreach ($mapping as $column2=>$column1)$obj[$column2] = $item[$column2]; $changes['detached'][] = $obj; } }else $changes['detached'][] = array_keys($map); } return $changes; } //**官方的时间戳是13位的而php一般都是11位的所以需要进行处理一下** function getMillisecond():string { list($t1, $t2) = explode(' ', microtime()); return (float)sprintf('%.0f',(floatval($t1)+floatval($t2))*1000); } function httpPost($uri = '', $body = '', $header = ''):array { $client = new \GuzzleHttp\Client([ 'base_uri' => $uri ]); $res = $client->post($uri, [ 'header' => $header, 'form_params' => $body ]); $data = $res->getBody()->getContents(); return json_decode($data, true); } //获取电脑的Mac地址 function getMacAddr($type = PHP_OS):string { $return_array = []; $mac_addr = ''; switch (strtolower($type)){ case 'linux' : @exec('ifconfig -a', $return_array); break; case 'solaris' : case 'unix' : case 'aix' : break; default: @exec('ipconfig /all', $return_array); if (empty($return_array)){ $ipconfig = $_SERVER['WINDIR'].'system32ipconfig.exe'; if (is_file($ipconfig)) @exec($ipconfig.' /all', $return_array); else @exec($_SERVER['WINDIR'].'systemipconfig.exe /all', $return_array); } break; } $temp_array = []; foreach ($return_array as $value){ if (preg_match('/[0-9a-f][0-9a-f][:-]'.'[0-9a-f][0-9a-f][:-]'.'[0-9a-f][0-9a-f][:-]'.'[0-9a-f][0-9a-f][:-]'.'[0-9a-f][0-9a-f][:-]'.'[0-9a-f][0-9a-f]/i', $value, $temp_array)){ $mac_addr = $temp_array[0]; break; } } unset($temp_array); return $mac_addr; } //2021-09-03 oracle 链接+ function getOciConnect() { $username = config('database.connections.oracle.username'); $password = config('database.connections.oracle.password'); $host = config('database.connections.oracle.host'); $service_name = config('database.connections.oracle.service_name'); $charset = config('database.connections.oracle.charset'); return oci_connect($username,$password,$host.'/'.$service_name,$charset); }