You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP调用Microsoft Dynamics NAV Web服务的日期格式问题

解决PHP调用Microsoft Dynamics NAV Web服务时的日期格式错误问题

你遇到的这个问题很常见——Dynamics NAV的SOAP Web服务对日期格式有严格要求,它只认ISO 8601标准的日期格式:YYYY-MM-DD(比如2018-05-30)。

你之前尝试的30-05-2018、05-30-2018、30/05/2018这些格式,NAV服务端无法自动解析为Date类型,所以才会抛出The value "30-05-2018" can't be evaluated into type Date.的错误。

把你的代码里的日期参数改成ISO格式就可以解决问题,修改后的函数代码如下:

public function getPriceList($customer_number){ 
    $url = 'Page/CustomerPrices'; 
    try { 
        $response = new \stdClass(); 
        $response->status = false; 
        $options = [ 
            'soap_version' => SOAP_1_1, 
            'connection_timeout' => 120, 
            'login' => env('MICROSOFT_DYNAMICS_NAV_USERNAME', ''), 
            'password' => env('MICROSOFT_DYNAMICS_NAV_PASSWORD', ''), 
            'exceptions' => true, 
        ]; 
        $soapWsdl = env('MICROSOFT_DYNAMICS_NAV_URI', '').$url; 
        $client = new SoapClient($soapWsdl, $options); 
        // 替换为ISO标准日期格式
        $response->data = $client->ReadMultiple([
            'filter'=> [],
            'Start_Date' => "2018-05-30",
            'Cust_No'=>$customer_number,
            'Name'=>'Testing',
            'Price_Comments'=>'',
            'setSize'=>'1'
        ]); 
        $response->status = true; 
    }catch (Exception $e) { 
        $response->data = $e->getMessage(); 
    } 
    return $response; 
}

额外提醒一下:如果后续需要传递带时间的日期参数,格式要换成YYYY-MM-DDTHH:MM:SS(比如2018-05-30T14:30:00),同样遵循ISO 8601标准。另外确保你的PHP环境时区设置正确,避免日期转换时出现不必要的偏差。

内容的提问来源于stack exchange,提问作者Sreejith B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:06:44