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); }